有一个类U1正在扩展U类。 U级是空的......
在U1的构造函数中有第一行,调用超类的构造函数...
public U1(Plate plate, int order)
{
super(plate, order);
...
}
现在我要删除U1类并在U类中执行到目前为止在U1中完成的任何操作... 所以,现在我不需要调用超类的构造函数,因为类U不会有任何超类......
this(plate, order)
是否不必要,我可以省略它吗?
这就是我的U构造函数的样子:
public U(Plate plate, int order)
{
this(plate, order);
...
}
答案 0 :(得分:8)
这是不必要的,我希望它会导致堆栈溢出,因为你从构造函数中调用构造函数本身。
答案 1 :(得分:7)
答案 2 :(得分:1)
在示例中如下我们将得到Error:递归构造函数调用,
class TestConstruct{
public TestConstruct(){
this();
System.out.println("constructor of Test class");
}//end of constructor
}//end of class TestConstruct
public class AppConstruct{
public static void main(String[] a){
Test t = new Test();
}//end of main
}//end of AppConstruct
答案 3 :(得分:0)
不是你可以省略它。你必须省略它,否则它将作为一个永无止境的递归调用。
答案 4 :(得分:0)
我们在构造函数中调用super()来初始化从超类继承的实例变量,因此如果没有超类,则不需要调用super() - 异常java.lang.Object。 如果在哪里是多构造函数,我们可以执行this()来调用其他构造函数,但不要调用 构造函数本身,导致以前人们所说的坏事。