java中实例化子类时会自动调用父类构造函数

pav*_*nan -5 java

abstract class A {
    abstract void method();
}

class B extends A {
    B() {
    }

    void method() {
    }
}

class C extends B {
    C() {
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在 main 中实例化类 C 时,它会自动调用 B(父类)的构造函数。这是正常现象还是我做错了什么?

Pra*_*kar 5

没有什么问题,有对super构造函数的隐式调用。

您还没有为类编写任何构造函数C,因此编译器将提供默认构造函数。

C(){
  super(); 
 }
Run Code Online (Sandbox Code Playgroud)

如果提供了默认构造函数,则会调用super(). 在你的情况下,C extends B所以构造函数B被调用。

如果您没有将一个类与任何其他类一起使用,那么默认情况下它也会扩展Object类。所以Object类构造函数将被调用。

  • +1用于解释构造函数链接。 (2认同)