使用嵌套 Parent Class 和 Child Classes 处理继承 objects

Handling inheritance with Parent Class and Child Classes with nested objects

假设我有一个 class Child 扩展 Class Parent。 class Child 有两个嵌套的 classes nested1 和 nested2。我想在 Parent 中定义一个抽象函数,参数为 nested1,return 类型为 nested 2。现在,为了实现这一点,我创建了一个同时具有参数和 return 的函数输入 Object。

所以现在,当我实现 child class 时,我总是需要将 Object 转换为 nested1 和 nested2。我觉得会有更好的方法来实现这一目标。有没有更好的方法来降低复杂度?

同时附上UML

从打字的角度来看,最好的方法是在 parent class 中创建一个接口,指定 child 中嵌套的 classes。这样你就不需要将参数转换为 func。这不会降低复杂性 per-se 但它确实使您的意图更清晰并且 reduces/eliminates 需要转换(总是一件好事)。

public abstract class Parent {

  interface Interface1 {
      //Specifications of methods that all child nested classes must have
  }

  interface Interface2 {
      //Specifications of methods that all child nested classes must have
  }

  public abstract Interface2 func(Interface1 obj);

}

public class Child extends Parent {

  private static class Impl1 implements Interface1 {
      //Implementations of methods in Interface1 as they pertain to Child
  }
  private static class Impl2 implements Interface2 {
      //Implementations of methods in Interface2 as they pertain to Child
  }


  @Override
  public Interface2 func(Interface1 obj) {
    //Should only have to use methods declared in Interface1
    //Thus should have no need to cast obj.

    //Will return an instance of Impl2
    return null;
  }
} 

在更广泛的范围内,您应该问自己为什么每个 child 都需要自己的一组嵌套 classes。如果您可以将嵌套的 class 定义移动到 parent(并使它们成为静态的)并且只让 child classes 根据需要自定义它们,这将变得更简单建筑。