超级构造函数调用顺序
Super constructor call order
在下面的示例中,class U
调用的哪个构造函数调用了 super
构造函数?没有参数的那个还是有一个参数的?
public class T{
T(){
System.out.println("T()");
}
public static void main(String[] args){
new U();
}
}
class U extends T{
U(){
this(2);
System.out.println("U()");
}
U(int x){
System.out.println("U(int x)");
}
}
第一个构造函数 U()
通过 this(2)
调用调用第二个构造函数 U(int x)
。
第二个构造函数 U(int x)
隐式调用超级 class 构造函数 T()
。
这意味着两个 U
构造函数都直接或间接调用超级 class 构造函数。
在下面的示例中,class U
调用的哪个构造函数调用了 super
构造函数?没有参数的那个还是有一个参数的?
public class T{
T(){
System.out.println("T()");
}
public static void main(String[] args){
new U();
}
}
class U extends T{
U(){
this(2);
System.out.println("U()");
}
U(int x){
System.out.println("U(int x)");
}
}
第一个构造函数 U()
通过 this(2)
调用调用第二个构造函数 U(int x)
。
第二个构造函数 U(int x)
隐式调用超级 class 构造函数 T()
。
这意味着两个 U
构造函数都直接或间接调用超级 class 构造函数。