在Java中Upcasting之后访问类的成员

时间:2016-06-22 06:24:52

标签: java inheritance upcasting

我正在阅读我的笔记(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 = 20BaseChild相同,导致数据隐藏。 int x = 50类的引用ID也在Child类引用变量Base中,从而导致向上转换。

这两个都应该导致b作为输出,因为50具有子类的引用ID,因此b应该是b.x并且还因为数据隐藏50隐藏int x= 50

那么,为什么输出是int x = 20

0 个答案:

没有答案