gpt4 book ai didi

java - 扩展/继承Java中的2个类

转载 作者:行者123 更新时间:2023-11-29 08:13:54 26 4
gpt4 key购买 nike

我已经阅读了这个主题,看来我最好的选择是将我想要扩展到接口(interface)中的类之一..

问题是 ParentA 是 Android API 中的一个类,所以我实际上无法修改它(我只有构建版本),而 ParentB 是由 friend 创建的,ParentB 已经实现了 Runnable(据我所知你可以'没有实现另一个接口(interface)的接口(interface)。无论如何我都会出错)。

最佳答案

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

当您的子类有两个潜在父类并且他们不相互子类化时,您需要问自己的事情是您的类是 ParentA 还是 ParentB。哪个更适合?一旦你决定了,你就把另一个变成了 hasa。

假设您决定您的类(class)是 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();
}
}

在这里,我委托(delegate)线程方法而不是 ParentB 方法,因为这是您最有可能希望在 Runnable 上控制的方法。如果 ParentB 具有您想要公开的自己的行为,那么您也将需要这些行为的委托(delegate)方法。

关于java - 扩展/继承Java中的2个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6034310/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com