У вас не может быть интерфейса, который реализует другой интерфейс, так как интерфейсы не имеют ничего общего с реализацией.Вы можете, однако, иметь интерфейс, который расширяет другой интерфейс.У вас также может быть класс, который реализует два разных интерфейса.
Когда у вас есть два потенциальных родителя для вашего подкласса, и они не подклассируют друг друга, вам нужно спросить себя, является ли ваш класс ParentA илиisa 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 имеет свое собственное поведение, которое вы хотите раскрыть, то вам также понадобятся методы делегирования.