假设有一个容器类和一个部件类,在容器类的某个方法中要创建部件类的实例对象,而部件类的构造方法要接受一个代表其所在容器的参数,程序代码如下: class Container
{
Component comp;
public void addComponent()
{
comp = new Component(this); // 将this作为对象引用传递
}
}Class Component
{
Container myContainer;
public Component(Container c)
{
myContainer = c;
}
}对于这个程序, 我的疑问是在容器类的某个方法中创建部件类的实例对象有何意义? 作用是什么??为什么用addComponent方法?在java中this的词义就是代表方法所属的对象的引用变量。那此时this代表的应该就是一个容器类的引用变量, 应该是把this这个外部的参数传递给谁呢, myContainer还是c呢? 这样传递的意义何在呢??

解决方案 »

  1.   

    很自然的程序,我们不仅要创建组件,更需要知道这些组件属于哪个容器对象。
    这里的this,即你的容器对象,用 new Component(this); 执行的结果是在当前这个对象下创建组件对象。这个this,也即public Component(Container c)中的c。明白了吧。
      

  2.   

    是传递给myContainer
    使用addComponent方法可以实例化Container对象不用在去new Container类对象
    好处就是可以防止有Container类的多个对象存在.
      

  3.   

    好象明白了一些。 但是如果目的是为了知道组件属于哪个容器对象的话。 直接在容器类里实例一个容器类自己的对象不好吗? 何必要到组件类里去实例一个myContainer?