我有一个包含对象的类,现在我想从Container类的外部调用Box和Toy对象中的函数
class Container
{
   Box box1 = new Box();
   Toy toy1 = new Toy();
   public void open()
   {
      box1.open();
   }
   public void play()
   {
      toy1.play();
   }
}我怎样才能避免重新创建方法,而只是与Container类共享方法。我不能使用继承,因为我有2个或更多的对象。
发布于 2012-08-02 19:33:52
您可以按如下方式进行操作。
public interface ToyInterface {
    public void play();
}
public class Toy implements ToyInterface {
    @Override
    public void play() {
        System.out.println("Play toy");
    }
}
public interface BoxInterface {
    public void open();
}
public class Box implements BoxInterface {
    @Override
    public void open() {
        System.out.println("open box");
    }
}
public class Container implements ToyInterface, BoxInterface {
    private BoxInterface box;
    private ToyInterface toy;
    public Container() {
        box = new Box();
        toy = new Toy();
    }
    public BoxInterface getBox() {
        return box;
    }
    public ToyInterface getToy() {
        return toy;
    }
    @Override
    public void play() {
        System.out.println("play container");
        this.toy.play();
    }
    @Override
    public void open() {
        System.out.println("open container");
        this.box.open();
    }
}然后,您可以在容器外部访问Box和Toy类的方法。
Container container = new Container();
container.open();
container.getBox().open();
container.play();
container.getToy().play();https://stackoverflow.com/questions/11776103
复制相似问题