【发布时间】:2017-11-19 15:32:44
【问题描述】:
我知道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 的副本(它谈到变量不参与多态性,但这里提到的那个返回子 obj 的对象,并且 obj 持有父类的 var 而不是它自己的)
【问题讨论】:
标签: java inheritance polymorphism