我学到了两件事:
new
- 运算符创建一个新实例,然后执行所述的connstructor以初始化该新实例this()
)创建一个新实例。根据我的理解,这些陈述互相反对。
例如,不会new Example()
创建两个实例,因为new
- 运算符创建一个,构造函数调用this()
并创建另一个实例?当然它并不是什么,但现在究竟是什么创造了一个实例......?
class Example
{
private boolean _b;
public Example()
{
this(false);
}
public Beispiel(boolean b)
{
_b = b;
}
}
答案 0 :(得分:6)
您的第二点不正确:调用this()
并不会创建新实例"。相反,它调用(通常是不同的)构造函数而不是new
调用的构造函数。
调用new
是创建新实例的原因。
答案 1 :(得分:0)
您可以在构造函数中使用this
来调用具有不同参数数量的同一类的构造函数,例如:
class Example{
private boolean b;
public Example(){
this(false) // you now call public Example(boolean b) to save code istead of this.b=false
}
public Example(boolean b){
this.b = b;
}
}
答案 2 :(得分:0)
通过调用this(false)
,您不会创建新实例。你只需要在构造函数中调用一个构造函数(与你传递的参数的数量相匹配),我现在无法想到任何有效的实际用法,但仍然是完全有效的。请注意,对于像这样的链构造函数,您必须在" parent"的第一行中进行新的构造函数调用。构造函数。如果这是有道理的。
底线;你创建一个对象。
也许为每个不同的构造函数调用添加print语句可以帮助您更好地掌握这一点。