假设我们有一个容器类和一个部件类(部件属于容器),在容器类的某个方法中要创建部件类的实例对象,而部件类的构造方法要接收一个代表其所在容器的参数。
class
Container
...
{
Component comp;
public void addComponent()...{
comp = new Component(this);
}
}
class Component ... {
Container c;
public Component(Container c)...{
this.c = c;
}
}
Component comp;
public void addComponent()...{
comp = new Component(this);
}
}
class Component ... {
Container c;
public Component(Container c)...{
this.c = c;
}
}
comp = new Component(this)
Component类的构造方法的定义要求在创建Component对象时必须有参数;
comp = new Component(new Component())这样写是错误的,因为我们调用addComponent方法时一定已经存在一个Container对象(因为addComponent不是static方法),我们也想要把这个对象作为参数传递给Component,而不是新建一个Comtainer对象作为Component的参数(这样做没有任何意义)。