我已经阅读了有关此主题的内容,看来最好的选择是使我想要扩展到接口的类之一。
事实是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/