【发布时间】:2016-10-05 01:52:25
【问题描述】:
我正在阅读 Interview Questions 关于 java 的内容,并找到了很好的示例并感到困惑。因为没有很好/更多的解释可以帮助我理解这个例子。这是一个例子。
public class MainClass {
public static void main(String[] args) {
Parent p = new Child();
System.out.println(p.getObject().x);
}
}
class Parent {
int x = 10;
public Parent getObject() {
System.out.println("Parent Object");
return new Child();
}
}
class Child extends Parent {
int x = 20;
public Child getObject() {
System.out.println("Child Object");
return new Child();
}
}
输出:
Child Object
10
但是当我将 Parent 类的 getObject 的返回类型更改为 Child 时。
public Child getObject() {
System.out.println("Parent Object");
return new Child();
}
然后我得到输出
Child Object
20
我知道字段不包含在多态中。
我很困惑,在更改 Parent 的 getObject() 的返回类型之后和之前的示例中结果应该相同;方法。
【问题讨论】:
标签: java polymorphism