私はJAVAでメンバー関数をオーバーライドすることを研究しており、メンバー変数をオーバーライドすることを検討しています。
だから、私はクラスを定義しました
public class A{
public int intVal = 1;
public void identifyClass()
{
System.out.println("I am class A");
}
}
public class B extends A
{
public int intVal = 2;
public void identifyClass()
{
System.out.println("I am class B");
}
}
public class mainClass
{
public static void main(String [] args)
{
A a = new A();
B b = new B();
A aRef;
aRef = a;
System.out.println(aRef.intVal);
aRef.identifyClass();
aRef = b;
System.out.println(aRef.intVal);
aRef.identifyClass();
}
}
出力は次のとおりです。
1
I am class A
1
I am class B
aRefがbintValに設定されているのに、なぜクラスAのままなのか理解できません。