ここで理解できるように、「a1」は属性として「a=200」を持つクラス B オブジェクトを参照しています。したがって、プログラムは 200 を出力すると予想していましたが、なぜこのプログラムは 200 ではなく 100 を出力するのでしょうか?
class A{
int a=100;
}
class B extends A{
int a=200;
}
class Demo{
public static void main(String args[]){
A a1=new B();
System.out.println("a : "+a1.a); //Prints 100
}
}