<分区>
我知道Variables doesn't exhibit polymorphic behavior并且仅限于方法。但是下面的代码在返回对象类型时有点困惑。
它正在调用子方法(这是正确的),这意味着它正在返回子对象。那么为什么不打印子变量的值呢?
class Parent {
int var = 11;
public Parent getInstance() {
System.out.println("In Parent ...");
return new Parent();
}
}
class Child extends Parent {
int var = 22;
public Child getInstance() {
System.out.println("In Child ...");
return new Child();
}
}
public class VariableHiding {
public static void main(String[] args) {
Parent p = new Child();
System.out.println(p.getInstance().var); // something's fishy?
}
}
// Output : In Child ... 11
PS:它不是this one 的副本(里面讲的是变量不参与多态,但是这里说的返回的是child obj的对象,obj持有的是parent的var,而不是自己的)