当一个类扩展一个类时,我们可以在为子类对象分配内存的同时使用超类引用。到目前为止我的理解是可以这样做,因为子类继承了其父类的数据,但它无法访问子类的成员,因为它只是引用,因此不知道添加了什么由子类完成。
我的问题是当我将方法隐藏到上述概念中时,超类引用变量开始引用子类函数。这是为什么 ?为什么它没有像它应该的那样调用它自己的方法?
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?
}
}