我正在学习以下课程
public class InheritTest{
Parent p = new Child();
Child c = (Child)p;
void someMethod(){
System.out.println(p.getX()+" "+c.getX());
}
public static void main (String [] args){
InheritTest it = new InheritTest();
it.someMethod();
}
class Child extends Parent{
int x = 1;
int getX(){
return this.x;
}
}
}
并且
public class Parent{
int x = 0;
int getX(){
return x;
}
}
当我调用p.getX()和c.getX()时,它打印1& 1
但是当我调用p.x和c.x时,它会打印0& 1
这种多级继承如何工作?请帮我理解这一点。
答案 0 :(得分:1)
Parent p = new Child();
行中,您创建p
作为对Child
c
作为相同对象的第二个引用对象是对象。就是这样。这是Child
。
引用具有类型,而对象具有类型。它们不是同一件事。它们必须兼容。
p
的类型为Parent
c
的类型为Child
Child
,无论您使用的是哪个引用(p
或c
)关于方法和字段之间的行为覆盖的不同,请参阅: