• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:継承について質問させていただきます)

Java初心者の疑問:privateなフィールドの継承について

このQ&Aのポイント
  • Java初心者の方からの質問です。
  • 質問は、privateなフィールドが継承されない理由についてです。
  • 具体的なコード例として、Catクラスの変数countに値を代入してもエラーが起きない理由を教えてください。

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

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.1

ご指摘の通り、Javaでは private のメソッド・フィールドは継承されません。ですが、メソッドと違い、参照するフィールドに関してはコンパイル時に型によって決定されます。(静的束縛) したがって、Animal クラスの getCount setCount では、必ず、Animal クラスの count を参照することになります。 ちなみに、サブクラスでフィールドを再定義しても、オーバーライドにはならず、隠蔽になります。(参考URL) 下記は、同じオブジェクトでも変数の型によって参照するフィールドが異なる場合のサンプルです。 public class Parent {  String str = "parent"; } public class Child extends Parent {  String str = "child"; } public class Test {  public static void main(String[] args) {   Child child = new Child();   Parent parent = child; // オブジェクトは同じもの   System.out.println(child.str); // "child" と表示される   System.out.println(parent.str); // "parent" と表示される  } }

参考URL:
http://www.javaroad.jp/java_class8.htm
simasi
質問者

お礼

ご回答いただきありがとうございます。 また、丁寧なご説明ありがとうございます。 なるほど。。。 現時点では完全に理解できたとは言えませんが、 さらに継承については勉強が必要と感じました。 どうもありがとうとうございました。

関連するQ&A