如果我有一个构造函数

public class Sample {


    public static StackOverflowQuestion puzzled;
    public static void main(String[] args) {

        puzzled = new StackOverflowQuestion(4);
    }
}


在程序的主要方法中

public class StackOverflowQuestion {

    public StackOverflowQuestion(){
    //does code
    }

    public StackOverflowQuestion(int a){
    this();
   }
}


这是通过构造函数2创建一个StackOverflowQuestion实例,然后通过构造函数1创建另一个StackOverflowQuestion实例,因此我现在彼此之间直接有两个StackOverflowQuestion实例吗?

还是在这种情况下,constructor2进行了横向调整,然后通过Constructor1创建了StackOverflowQuestion的实例?

最佳答案

我想你的意思是:

public class StackOverflowQuestion
{

    public StackOverflowQuestion(){ // constructor
       //does code
    }

    public StackOverflowQuestion(int a){ // another constructor
       this();
    }
}


并这样称呼:

StackOverflowQuestion puzzled = new StackOverflowQuestion(4);


这将仅创建一个对象,因为new仅执行一次。调用this()将在另一个构造函数中执行代码,而无需创建新对象。该构造函数中的代码能够修改当前创建的实例。

10-06 02:58