gpt4 book ai didi

java - 我可以动态更改父类吗

转载 作者:行者123 更新时间:2023-12-02 02:07:28 25 4
gpt4 key购买 nike

下面是我的 2 个 Action 类,它们扩展了不同的 Action 类。

Employee1Action extends HRAction
Employee2Action extends ManagerAction

两个操作类中有一些通用代码。我正在考虑在另一个 (CommonAction) Action 类中复制该通用代码,并且 Employee1Action 和 Employee2Action 将扩展到 CommonAction。但两个类都有不同的父类。我可以动态更改 CommonAction 类的父级吗?意味着如果指针位于 Employee1Action 中,则 CommonAction 将扩展到 HRAction,并且 Employee2Action 类也将如此。我可以这样做吗?如果是的话我该怎么做?

最佳答案

在 Java 中,您不能从多个父类继承 - 当然,委托(delegate)是比继承更灵活的方法。

您可以从Employee1ActionEmployee2Action中提取具有公共(public)操作的接口(interface);添加一个实现,并将公共(public)代码放入该实现中。然后为 Employee1ActionEmployee2Action 对象提供您的实现实例,并让它们将常见操作委托(delegate)给委托(delegate)实例。这样就可以去掉重复的代码。

在代码中,

interface CommonAction {
void doSomething();
}
class DefaulCommonAction implements CommonAction {
public void doSomething() {
/* do something here -
* this is the duplicate code from Employee 1 and 2
*/
}
}

class HRAction {}
class ManagerAction {}

class Employee1Action extends HRAction {
private CommonAction action;
public Employee1Action (CommonAction action){
this.action = action;
}
// delegate operations
public void doSomething() {
action.doSomething();
}
}
class Employee2Action extends ManagerAction {
// the same delegation here
}

关于java - 我可以动态更改父类吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50545107/

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