根据我的理解,当我们将子对象转换为父类的引用时,子对象会失去与子类有关的特定属性。但是,它仍然可以识别被覆盖的方法和变量。
我的问题是为什么在方法被覆盖的情况下输出显示子类的结果,而在变量被覆盖的情况下输出显示父类的结果。为什么方法和变量之间的行为差异如此之大
class A
{
int a = 2;
public void show()
{
System.out.println("Inside A");
}
}
class B extends A
{
int a = 555;
void show()
{
System.out.println("Inside B");
}
}
class Demo
{
public static void main(String[] args)
{
A obj = new B();
System.out.println(obj.a); // prints 2.
obj.show(); // prints Inside B
}
}