考虑子类的构造函数。如果此构造函数没有调用其超类的构造函数作为第一个语句,则在执行期间会发生什么。
我的回答(想验证它是否正确):
如果Subclass没有从Superclass调用构造函数,那么将使用Superclass中的默认构造函数。如果没有默认构造函数,则代码将无法编译。
答案 0 :(得分:4)
好吧,我会使用术语“无参数构造函数”而不是“默认构造函数”,并且我还要补充说,如果有一个无参数构造函数但代码将无法编译,但是它无法访问 - 但是否则这是正确的。
我可能会根据一个构造函数来表达答案,该构造函数没有显式链接到超类构造函数或同一类中的另一个构造函数,而等同于调用
的一个构造函数。super();
一开始。我还会参考Java Language Specification section 8.8.7:
如果构造函数体不以显式构造函数调用开始,并且声明的构造函数不是原始类Object的一部分,则编译器会隐式假定构造函数体以超类构造函数调用“{{1 “,它的直接超类的构造函数的调用,不带参数。