如何在Java中实现继承?

时间:2013-10-08 07:19:45

标签: java inheritance implementation

如何在Java中实现继承?例如,考虑一下:

class A {
    public void foo() {
         System.out.print("A");
    }
}
class B extends A {
    ...
}
class Test {
    public static void main(String[] args) {
        B test = new B();
        test.foo(); // how is foo() called?
}

在这一行之下,编译器会将A.foo()的定义转储到B类的主体中吗?喜欢

class B extends A {
    ...
    public void foo() {
         System.out.print("A");
    }
}

或者foo以某种方式在A级中查找并在那里打电话?

2 个答案:

答案 0 :(得分:3)

这可能对你有所帮助,Ivor Horton编写的Java 7开头的解释

  

我在本章开头说过派生类扩展了一个基类。这不仅仅是行话 - 它   真的这样做。正如我已多次说过,继承是关于基类成员的   可以在派生类中访问,而不是派生类对象中存在的基类成员。一个对象   子类包含原始基类的所有成员,以及您定义的任何新成员   在派生类中。如图6-3所示。

enter image description here

答案 1 :(得分:2)

方法体不会复制到子类的未定义方法体中。相反,当你打电话

B test = new B();
test.foo();

它将通过其层次结构看起来,每次无法找到实现时上升到一个级别。 首先,它将检查没有实现的B。比A高一级,所以它会使用那个。