如果我有一个构造函数
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()
将在另一个构造函数中执行代码,而无需创建新对象。该构造函数中的代码能够修改当前创建的实例。