Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。126件3以下に示したコードの様にJavaをKotlinで置き換えてみましたが、コメントアウトを外すとコンパイルエラーになります。個の銅バッジツールで試してみるとか。15:20ありがとうございます!実はJavaで書いたものをIntelliJで変換したみたのですが、やはりそのまますぐ動く状態に変換というわけにはいかず、エラーがどこかしこにいっぱい出まして、探りながら直そうにもわかりませんでした...。地力でやってみた次第です。15:30済みません。検索結果を紹介しただけなので詳しいことは判りません。手作業だとこんな記事があります。票1そもそも元のJavaコードが「こんなコードを書くと一見奇妙な結果が出る」書き方の例になっています。隠蔽フィールドの宣言Javaでは、サブクラス側のフィールドは親クラス側のフィールドを隠すような別フィールドになる。コンパイラは「コンパイル時に見えている側」のフィールドを使う。staticメンバーのインスタンスからの呼び出しJavaではコンパイル時に決まる型を元にしてどのクラスのstaticメンバーを使うか決められる。いずれも現在のJavaコンパイラでは警告が出るはずです。これらの警告を無視しないようにしましょう。Kotlinでは、そのような誤用を防ぐため、そもそも同様のことは出来ないようになっています。フィールドを直接宣言できないKotlinのプロパティ宣言はJavaで言うと、フィールドとgetterとsetterをまとめて宣言しているようなものです。従って、メソッドと同様にオーバライドもでき、メソッドのオーバライドと同様の挙動になります。staticなメンバーは定義できないKotlinのcompanionは「特定のクラスに結びついた別オブジェクトのプロパティやメソッド」を宣言するためのものです。staticの代替とみなされていますが、Javaのstaticと完全に同じ動作をするわけではなく、インスタンスを通じては呼び出せません。コンパイルが通るように書くと、こんな感じになるでしょう。obj.methodB()}上記のようにSuperかSubを明示しないと呼び出せないので、Javaのように「Sub側のプロパティやメソッドが参照されると思ったらSuperの方だった」なんてことは起こりません。KotlinはJavaと相互運用できるよう考えられていますが、「文法が違うだけでJavaと全く同じ」なのではありません。ご質問にあるJavaコードのように「時に期待と異なる一見奇妙な結果が出る」ようなコードの挙動を完全に再現することは出来ません。個の銅バッジありがとうございます!確かに、Javaのコードの方が実用的にはまどろっこしいコードですよね。Goldの教科書をKotlinに置き換えていて、ふと、「参照型はスーパータイプ、クラス型はサブタイプ」のやり方や、継承関係におけることで認識が正しいのか気になりました。さん、コメントありがとうございます。警告については環境にもよるのに、必ず表示されるかのように書いたのは乱暴すぎましたね、失礼しました。ご質問へのコメントで示されたように、Javaの置き換えではなく、Kotlinらしいコーディングをするのが重要なのだろうと思います。私もKotlinについては学習中の身で、今回のような、知識のリフレッシュに役立つ質問は大変助かります。ありがとうございました。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。FatJarのビルドについて1プログラミング(javaのクラス)について質問があります。2kotlinの「?」0Javaからmysqlコマンドを実行し、結果をファイルに書き出したい。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。