- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:継承について質問させていただきます)
Java初心者の疑問:privateなフィールドの継承について
このQ&Aのポイント
- Java初心者の方からの質問です。
- 質問は、privateなフィールドが継承されない理由についてです。
- 具体的なコード例として、Catクラスの変数countに値を代入してもエラーが起きない理由を教えてください。
- みんなの回答 (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" と表示される } }
お礼
ご回答いただきありがとうございます。 また、丁寧なご説明ありがとうございます。 なるほど。。。 現時点では完全に理解できたとは言えませんが、 さらに継承については勉強が必要と感じました。 どうもありがとうとうございました。