abstract class A {
private int a;
public A(int x) {
a = x;
}
public int getA() {
return a;
}
}
class B extends A {
public B(int x) {
super(x);
}
}
class TestB {
public static void main(String args[]) {
B b = new B(5);
System.out.println(b.getA());
}
}
私はB b=new B(5);
を言うとき、スーパークラスのコンストラクタが呼び出され、プライベートインスタンス変数iがb
によってreffered class B
のオブジェクトにgetA()
を言うときだから、返し5に初期化されます。インスタンス変数a
がclass A
であるため、class B
に継承されません。インスタンス変数a
はどこに作成されますか(ヒープ上)。 public
だったら、ヒープ上のclass B
インスタンスの一部だったはずです。またclass A
はabstarctクラスなので、インスタンス化することはできません。ヒープで作成された抽象クラスのプライベートインスタンス変数はどこにありますか?この状況で
"クラスAのインスタンス変数aはプライベートなので、クラスBに継承されません。" - 間違っていますが、もちろん継承されています! 'getA()'メソッド以外はアクセスできない。 –