多级继承

时间:2014-10-20 02:05:28

标签: java inheritance

我正在学习以下课程

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

这种多级继承如何工作?请帮我理解这一点。

1 个答案:

答案 0 :(得分:1)

  • 在第Parent p = new Child();行中,您创建p作为对Child
  • 类型对象的引用
  • 然后您创建c作为相同对象的第二个引用

对象是对象。就是这样。这是Child

引用具有类型,而对象具有类型。它们不是同一件事。它们必须兼容。

  • p的类型为Parent
  • c的类型为Child
  • 对象的类型为Child,无论您使用的是哪个引用(pc

关于方法和字段之间的行为覆盖的不同,请参阅: