构造函数this()不必要吗?

时间:2013-03-13 08:29:09

标签: java constructor this superclass default-constructor

有一个类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);
    ...

    }

5 个答案:

答案 0 :(得分:8)

这是不必要的,我希望它会导致堆栈溢出,因为你从构造函数中调用构造函数本身。

答案 1 :(得分:7)

这将导致编译错误。 JLS section 8.8.7说:

  

“构造函数通过一系列涉及this的一个或多个显式构造函数调用直接或间接调用自身是一个编译时错误。”

在这种情况下,构造函数直接调用自身。

答案 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()来调用其他构造函数,但不要调用 构造函数本身,导致以前人们所说的坏事。