gpt4 book ai didi

java - 使用嵌套对象处理父类和子类的继承

转载 作者:行者123 更新时间:2023-12-01 21:39:24 25 4
gpt4 key购买 nike

假设我有一个子类扩展父类。 Child 类有两个嵌套类nested1 和nested2。我希望在 Parent 中定义一个抽象函数,其参数为nested1,返回类型为nested2。现在,为了实现此目的,我创建了一个参数和返回类型均为 Object 的函数。

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

还附上UML enter image description here

最佳答案

从打字的角度来看,最好的方法是在父类中创建一个接口(interface),指定子类中的嵌套类。这样你就不需要将参数转换为 func。这本身并没有降低复杂性,但它确实使您的意图更加清晰,并减少/消除了转换的需要(总是一件好事)。

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 都需要自己的一组嵌套类。如果您可以将嵌套类定义移动到父类(并使它们静态)并让子类在构造过程中根据需要自定义它们,这将变得更简单。

关于java - 使用嵌套对象处理父类和子类的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36632576/

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