调用超类型方法会创建一个新的超类型对象吗?

时间:2015-03-22 14:58:19

标签: java oop

给出代码片段:

class A {
    public String foo() {

    }
}

class B extends A {
    public String foo() {
        super.foo();
    }
}

我们调用时会发生什么:

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

是否在内部创建了A对象,只是为了调用A.foo()

3 个答案:

答案 0 :(得分:2)

super.method()语法禁用常规动态方法调度机制,并显式调用为此对象的超类定义的方法,并传入相同的this引用。不涉及实例化。

答案 1 :(得分:2)

否。您不会创建任何其他对象。

扩展类并实例化子类时,您已经创建了一个超类型实例加上扩展内容的对象。 虽然您实际上并没有创建两个单独的对象,但您可以创建一个(B is A++),也称为多态(您有一个可以执行超类型方法的对象)。 / p>

答案 2 :(得分:0)

一旦A被调用,就会创建

new B();实例。请记住,派生类与父类的关系为is-a。在这里,可以说B is-a A