我已经阅读了这个主题,似乎我最好的选择是创建一个我希望扩展到接口的类。
问题是ParentA是来自Android API的类,所以我实际上无法修改它(我只有构建版本),而ParentB是由朋友制作的,ParentB已经实现了Runnable(和AFAIK你可以'有一个实现另一个接口的接口..无论如何我都会遇到错误。)
答案 0 :(得分:3)
您不能拥有实现其他接口的接口,因为接口与实现无关。但是,您可以使用扩展另一个界面的界面。您还可以拥有一个实现两个不同接口的类。
如果你的子类有两个潜在的父母并且他们没有相互继承,那么你需要问自己的是你的班级是ParentA还是父母B.哪一个更合适?一旦你决定,你将另一个变成哈萨。
所以,让我们说你决定你的班级是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有自己想要公开的行为,那么你也需要委托方法。
答案 1 :(得分:2)
在Java中,您可以扩展接口。
但对于您的情况,我建议使用聚合模式或委托模式。
查看Java设计模式:http://en.wikipedia.org/wiki/Delegation_(programming)