我已经阅读了有关此主题的内容,看来最好的选择是使我想要扩展到接口的类之一。

事实是ParentA是Android API中的一个类,因此我实际上无法对其进行修改(我只有构建),并且ParentB是由朋友创建的,ParentB已经实现了Runnable(而AFAIK您不能拥有接口,该接口实现了另一个接口。无论如何我都会收到错误)。

最佳答案

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

当您的子类有两个潜在的父级并且彼此不子级化时,您需要问自己的问题是您的类是ParentA还是isa ParentB。哪个更合适?一旦决定,就将另一个变成hasa。

假设您决定自己的班级是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中的2个类扩展/继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6034310/

10-10 02:49