继承类中的构造函数调用

Joh*_*Doe 1 java

这是关于Java的一个非常基本的问题.我已经读过某个地方,首先在子类的构造函数中隐式调用超类的构造函数.但我找不到文档的参考,详细阅读.有人可以提供这个参考吗?

这是我正在谈论的一个例子,它输出super sub字符串:

class SuperClass {
    static String s = "";
    protected SuperClass() { s += "super "; }
}

public class SubClass extends SuperClass {
    private SubClass() { s += "sub"; }
    public static void main(String[] args) {
        new SubClass();
        System.out.println(s);
    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

在Java中没有覆盖构造函数 - 它们从一开始就不会被称为多态.

但是每个构造函数都必须调用超类的构造函数,无论是隐式(调用无参数的)还是显式的(super(...)作为构造函数体的第一行 - 链到同一个类中的另一个构造函数,this(...)作为第一行)构造函数体.链接的构造函数在构造函数体的其余部分之前执行.

有关更多详细信息,请参见Java语言规范的8.8.7节.