• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C# と Javaの継承の違い)

C#とJavaの継承の違い

このQ&Aのポイント
  • C#とJavaの継承の挙動には違いがありますか?
  • C#とJavaの継承では、サブクラスのメソッドの実行結果が異なる場合があります。
  • C#では親クラスのメソッドを実行するため、サブクラスのメソッドではなく親クラスのメソッドが表示されることがあります。一方、Javaではサブクラスのメソッドが実行されます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

ソコの解説をよく読むべし。 C#は public new string getName() { ... } new の有無で挙動が変わります(変えることができます)。

unko347
質問者

お礼

ご回答ありがとうございます。 Javaと同様の動作をさせるためには 親クラスのメソッドにvirtualを付けて継承を許可し、 サブクラスのメソッドにはoverrideすることが必要なの ですね。

その他の回答 (1)

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.2

そのページのコードが示す通り、C# ではメソッドはオーバーライド不可がデフォルトで、オーバーライドするには親クラスで許可を与える必要があります。 一方、Java ではオーバーライド可能で、オーバーライド不可にするには final でそのように制約をかけることになります。 これはどちらが優れているかという事ではなくその言語の仕様としてどちらを選んだかにすぎません。 もっとも、Java ではあるメソッドがオーバーライドされているかどうかがわかりづらいため、オーバーライドしたメソッドには @Override アノテーションを付加することが推奨されています(うっかり名前・引数型を間違ってオーバーライドになっていない場合にエラーを出してくれますしね)。

unko347
質問者

お礼

ご回答ありがとうございます。 Javaと同様の動作をさせるためには 親クラスのメソッドにvirtualを付けて継承を許可し、 サブクラスのメソッドにはoverrideすることが必要なの ですね。

関連するQ&A