Java 构造函数调用子类

Java 构造函数调用子类,java,constructor,Java,Constructor,考虑一个子类的构造函数。如果此构造函数没有调用其超类的构造函数作为第一条语句,那么在其执行期间会发生什么 我的回答(要验证它是否正确): 如果子类没有从超类调用构造函数,那么将使用超类中的默认构造函数。如果没有默认构造函数,那么代码将无法编译。好吧,我会使用术语“无参数构造函数”而不是“默认构造函数”,并且我还要补充一点,如果有无参数构造函数,但它不可访问,那么代码将无法编译,但除此之外,这是正确的 我可能会用一个构造函数来表示答案,这个构造函数没有显式链接到超类构造函数或同一类中的另一个构造函

考虑一个子类的构造函数。如果此构造函数没有调用其超类的构造函数作为第一条语句,那么在其执行期间会发生什么

我的回答(要验证它是否正确):


如果子类没有从超类调用构造函数,那么将使用超类中的默认构造函数。如果没有默认构造函数,那么代码将无法编译。

好吧,我会使用术语“无参数构造函数”而不是“默认构造函数”,并且我还要补充一点,如果有无参数构造函数,但它不可访问,那么代码将无法编译,但除此之外,这是正确的

我可能会用一个构造函数来表示答案,这个构造函数没有显式链接到超类构造函数或同一类中的另一个构造函数,与调用

super();
一开始。我还要提到:

如果构造函数体不是以显式构造函数调用开头,并且所声明的构造函数不是原始类对象的一部分,则编译器会隐式地假定构造函数体以超类构造函数调用“
super();
”开头,对其直接超类的构造函数的调用,不带任何参数


好吧,我会使用术语“无参数构造函数”而不是“默认构造函数”,并且我还要补充一点,如果有无参数构造函数,但它是不可访问的,那么代码将无法编译,但在其他情况下,这是正确的

我可能会用一个构造函数来表示答案,这个构造函数没有显式链接到超类构造函数或同一类中的另一个构造函数,与调用

super();
一开始。我还要提到:

如果构造函数体不是以显式构造函数调用开头,并且所声明的构造函数不是原始类对象的一部分,则编译器会隐式地假定构造函数体以超类构造函数调用“
super();
”开头,对其直接超类的构造函数的调用,不带任何参数


测试答案是否正确的一个简单方法是快速编写java代码,看看它的性能是否与您认为的一样。请将标题更改为与问题内容相关。谢谢@Chris:这并不总是找到正确答案的好方法,因为有些行为可能是特定于实现的,或者在其他方面“无法保证”。测试你是否有正确答案的一个简单方法是快速编写java代码,看看它的性能是否如你所想。你能改变你的标题,使其与你的问题内容相关吗,请谢谢@克里斯:这并不总是找到正确答案的好方法——因为有些行为可能是特定于实现的,或者在其他方面“不保证”。非常感谢您的快速响应。非常感谢您的快速响应。