构造函数调用

Kra*_*ken 5 java constructor

我有三个班:

public class A {
    public A(){
        System.out.println("in A");
    }
}


public class B extends A{

    public B(){
        System.out.println("in b");
    }
} 


public class C extends B{

    public C(){
        System.out.println("in C");
    }   
}
Run Code Online (Sandbox Code Playgroud)

现在我真的不确定构造函数如何调用.如果我实例化C c= new C();,以什么顺序(以及为什么那个顺序)调用构造函数.如果我实例化C类,那么它不应该只检查C类是否有任何构造函数,如果有,它应该使用它吗?

为什么输出 - >在A In B in C?

只有当它在自己的类中找不到构造函数时才会在层次结构中出现?或者每次都会隐式调用超类的构造函数?

Hei*_*bug 3

默认情况下,从基类构造函数调用超级构造函数。

唯一应该使用 super 调用超类构造函数的情况是当您需要显式地将参数传递给超类构造函数本身时。

所以答案是肯定的,都是叫的。顺序是从层次结构中的最高类向下到基类,因此:A、B、C。