这是关于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);
}
}
答案 0 :(得分:7)
Java中没有覆盖的构造函数 - 它们并不是多态的,而是从一开始就被称为。
但是每个构造函数都必须调用超类的构造函数,隐式地(调用无参数的)或显式的(使用super(...)
作为构造函数体的第一行 - 或链到同一个类中的另一个构造函数,this(...)
作为构造函数体的第一行。链接的构造函数在构造函数体的其余部分之前执行。