クラスがクラスを拡張する場合、サブクラス オブジェクトにメモリを割り当てながら、スーパークラス参照を使用できます。これまでのところ、サブクラスはその親クラスのデータを継承するため、そうしても問題ないことを理解していますが、サブクラスのメンバーには参照であるためアクセスできず、追加内容がわからないためです子クラスによって行われます。
私の質問は、上記の概念にメソッド隠蔽を含めたとき、スーパークラス参照変数が子のクラス関数を参照し始めたことです。何故ですか ?本来の方法で独自のメソッドを呼び出さなかったのはなぜですか?
class A{
void show(){ System.out.print("CLass A. \n"); }
}
class B extends A{
void show(){System.out.print("Class B. \n"); }
}
class Main{
public static void main(String[] args){
A a= new A();
B b= new B();
a.show(); // prints Class A
b.show(); // prints Class B
A a1= new B();
a1.show(); // print Class B. why is this ? it should be Class A as per theory?
}
}