Java 构造函数()是否不必要?
有一个类U1正在扩展类U。 U班是空的 在U1的构造函数中有第一行,调用超类的构造函数Java 构造函数()是否不必要?,java,constructor,this,superclass,default-constructor,Java,Constructor,This,Superclass,Default Constructor,有一个类U1正在扩展类U。 U班是空的 在U1的构造函数中有第一行,调用超类的构造函数 public U1(Plate plate, int order) { super(plate, order); ... } 现在我想删除U1类并在U类中执行到目前为止在U1中所做的任何操作。。。 所以,现在我不需要调用超类的构造函数,因为类U不会有任何超类 public U1(Plate plate, int order) { super(plate, order); ... } 这个(
public U1(Plate plate, int order)
{
super(plate, order);
...
}
现在我想删除U1类并在U类中执行到目前为止在U1中所做的任何操作。。。
所以,现在我不需要调用超类的构造函数,因为类U不会有任何超类
public U1(Plate plate, int order)
{
super(plate, order);
...
}
这个(盘子、订单)
是不必要的,我可以省略它吗
这就是我的U构装师的样子:
public U(Plate plate, int order)
{
this(plate, order);
...
}
这是不必要的,我希望它会导致堆栈溢出,因为您可以从构造函数中调用构造函数本身。但您不能操作它。您必须对其进行操作,否则它将充当一个永无止境的递归调用。它将导致编译错误。报告说: “构造函数通过一系列涉及
this
的一个或多个显式构造函数调用直接或间接调用自身是编译时错误。”
在本例中,构造函数直接调用自身。我们在构造函数中调用super()来初始化从super类继承的实例变量,因此如果没有super类,则无需调用super()——异常java.lang.Object。
如果其中有多个构造函数,我们可以使用()调用其他构造函数,但不调用
构造函数本身,这导致了前面提到的不好的事情。在下面的示例中,我们将得到错误:递归构造函数调用
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
+1、接得好
javac
确实返回了错误递归构造函数调用
。实际上,它甚至不足以导致堆栈溢出。它永远不会到达运行时。