从 Java 中的 2 个类扩展/继承



我已经阅读了这个主题,似乎我最好的选择是制作一个我想扩展到接口中的类。

问题是 ParentA 是来自 Android API 的一个类,所以我实际上无法修改它(我只有构建),而 ParentB 是由朋友制作的,ParentB 已经实现了 Runnable(AFAIK 你不能有一个实现另一个接口的接口。无论如何我都会收到错误)。

你不能有一个实现另一个接口的接口,因为接口与实现无关。但是,您可以使用一个扩展另一个接口的接口。还可以拥有一个实现两个不同接口的类。

当你的子类有两个潜在的父类并且他们不互相分类时,你需要问自己的是你的班级是 ParentA 还是 ParentB。哪一个更适合?一旦你决定了这一点,你就把另一个变成哈萨。

因此,假设您决定您的类是 ParentA。您的代码可能如下所示:

public class MyClass extends ParentA {
    private final ParentB runnable;
    private final Thread runningThread;
    public MyClass(ParentB runnable) {
        this.runnable = runnable;
        this.runningThread = new Thread(this.runnable);
    }
    public void start() {
        this.runningThread.start();
    }
    public void interrupt() {
        this.runningThread.interrupt();
    }
    public boolean isAlive() {
        return this.runningThread.isAlive();
    }
}

在这里,我委托线程方法而不是 ParentB 方法,因为这是您最有可能想要在 Runnable 上控制的内容。如果 ParentB 有自己的行为,并且你想要公开,那么你也需要委派方法来实现这些行为。

在Java中,你可以扩展接口。

但是对于您的情况,我建议使用聚合模式或委派模式。

看看Java设计模式:http://en.wikipedia.org/wiki/Delegation_(编程)

最新更新