java - 与类共享字段方法

标签 java inheritance methods extend friend

我有一个包含对象的类 现在我想从 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 个或更多对象。

最佳答案

您可以按如下方式进行操作。

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();
    }
}

然后就可以在Container之外访问Box和Toy类的方法了。

Container container = new Container();
container.open();
container.getBox().open();

container.play();
container.getToy().play();

关于java - 与类共享字段方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11776103/

相关文章:

java - 在库中使用依赖注入(inject)

java - 如何使用mysql查询找到更接近另一个日期的日期

java - listview onclick toast 在 fragment 中不起作用

java - 为什么不允许重写方法中参数类型的差异(一个是原始方法,另一个是包装器)?

objective-c - XCODE 传递一个方法作为参数

java - 自定义 Java 编译器(扩展)

Ruby - 仅使用某些参数初始化继承, super ?

java - 继承后行为发生变化

javascript - 你如何遍历 JavaScript 伪类中的所有方法,而不管它们是否被标记为可枚举?

php - 如何在 PHP 中创建嵌套方法?