我正在阅读我的笔记(5-6个月后),我无法理解以下代码给出的输出:
textview1.tag=1;
textview2.tag=2;
textview3.tag=3;
我希望输出为class Base
{
int x=20;
}
class Child extends Base
{
int x=50;
public static void main(String arg[])
{
Base b = new Child(); //upcasting
System.out.println(b.x); // prints 20
}
}
,但输出为50
。我不理解此输出背后的 原因 。
我知道20
中的int x = 20
与Base
类Child
相同,导致数据隐藏。 int x = 50
类的引用ID也在Child
类引用变量Base
中,从而导致向上转换。
这两个都应该导致b
作为输出,因为50
具有子类的引用ID,因此b
应该是b.x
并且还因为数据隐藏50
隐藏int x= 50
。
那么,为什么输出是int x = 20
。