0
変数のオーバーライドについて
基本情報技術者試験で、javaの勉強をしています。
class TestA {
int n=10;
int getN() {
return n;
}
void disp() {
System.out.println("クラスTestA:"+n);
}
}
class TestB extends TestA {
int n=20;
void disp() {
System.out.println("クラスTestB:"+n);
}
}
class Test808 {
public static void main(String[] args) {
TestB objB=new TestB();
System.out.println("objB.n:"+objB.n);
System.out.println("objB.getN():"+objB.getN());
objB.disp();
TestA objA=objB;
System.out.println("objA.n:"+objA.n);
System.out.println("objA.getN():"+objA.getN());
objA.disp();
}
}
実行結果で、
objB.n:20
objB.getN():10
クラス TestB:20
objA.n:10
objA.getN():10
クラス TestB:20
となりましたが、結果の4行目の
objA.nが20になると思いましたが、10となってます。
objAにはobjBのアドレスが入っているので、同じものではないでしょうか?