我可以动态更改父级 class 吗

can i change parent class dynamically

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

Employee1Action extends HRAction
Employee2Action extends ManagerAction

两个Action中有一些共同的代码类。我正在考虑将通用代码复制到另一个 (CommonAction) Action class 中,Employee1Action 和 Employee2Action 将扩展到 CommonAction。但是两个 classes 都有不同的父 classes。我可以动态更改 CommonAction class 的父级吗?意味着如果指针在 Employee1Action 中,那么 CommonAction 将扩展到 HRAction,同样适用于 Employee2Action class.can 我喜欢这样吗?如果是,我该怎么做?

在 Java 中,您不能从多个父级继承 类- 当然,委派是一种比继承更灵活的方法。

你可以抽取Employee1ActionEmployee2Action常用操作的接口;添加一个实现并将公共代码放入该实现中。然后给 Employee1ActionEmployee2Action 对象一个你的实现的实例,并让它们将公共操作委托给委托实例。这样就可以去掉代码重复了。

在代码中,

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
}