(是或否)(如果您编写的构造函数的第一条语句不是对另一个构造函数的调用,则插入默认构造函数调用。)
这个问题的答案是正确的。 然后我尝试并创建了一些链式构造函数。
public class Temp {
// default constructor 1
Temp()
{
System.out.println("default");
}
// parameterized constructor 2
Temp(int x)
{
System.out.println(x);
}
public static void main(String args[])
{
new Temp(8);
}
}
输出:
8
未打印“默认”。因此,我认为未调用默认构造函数。答案应该是错误的。有人可以解释为什么吗?
答案 0 :(得分:1)
如果构造函数主体不是以显式构造函数调用开头,并且要声明的构造函数不是原始类Object的一部分,则构造函数主体隐式以超类构造函数调用“ super();”开头,即不带参数的直接超类的构造函数。
所以a default constructor call in inserted.
,但是它是您超类的默认构造函数(在本例中为Object
),而不是您被声明的类。