Java 处理具有嵌套对象的父类和子类的继承
假设我有一个扩展类父级的类子级。类子级有两个嵌套类nested1和nested2。我希望在父级中定义一个抽象函数,参数为nested1,返回类型为nested2。现在,为了实现这一点,我创建了一个同时使用参数和返回类型作为对象的函数 所以现在,当我实现子类时,我总是需要将对象强制转换为nested1和nested2。我觉得有更好的方法来实现这一点。有没有更好的方法来降低复杂性 还附上了UMLJava 处理具有嵌套对象的父类和子类的继承,java,oop,ooad,Java,Oop,Ooad,假设我有一个扩展类父级的类子级。类子级有两个嵌套类nested1和nested2。我希望在父级中定义一个抽象函数,参数为nested1,返回类型为nested2。现在,为了实现这一点,我创建了一个同时使用参数和返回类型作为对象的函数 所以现在,当我实现子类时,我总是需要将对象强制转换为nested1和nested2。我觉得有更好的方法来实现这一点。有没有更好的方法来降低复杂性 还附上了UML 从键入的角度来看,最好的方法是在父类中创建一个接口,指定子类中的嵌套类。这样,就不需要将参数强制转换为f
从键入的角度来看,最好的方法是在父类中创建一个接口,指定子类中的嵌套类。这样,就不需要将参数强制转换为func。这本身并没有降低复杂性,但它确实让你的意图更加清晰,减少/消除了铸造的需要(总是一件好事)
在更广泛的范围内,您应该问问自己,为什么每个孩子都需要自己的嵌套类集。如果您可以将嵌套类定义移动到父类(并使其成为静态的),并且在构建过程中让子类根据需要对其进行自定义,那么这将变得更简单。从键入的角度来看,最好的方法是在父类中创建一个接口,指定子类中的嵌套类。这样,就不需要将参数强制转换为func。这本身并没有降低复杂性,但它确实让你的意图更加清晰,减少/消除了铸造的需要(总是一件好事)
在更广泛的范围内,您应该问问自己,为什么每个孩子都需要自己的嵌套类集。如果您可以将嵌套的类定义移动到父类(并使其成为静态的),并且只需让子类在构建过程中根据需要对其进行自定义,这将变得更加简单。谢谢。嵌套类的定义在所有子类中都是不同的。所以我不能将它们作为单独的静态类。你能想出一个更好的方法来改进设计吗?既然如此,设计的问题是为什么你需要在父级中使用抽象方法?假设我有
Parent p=…
但我不知道它的类型,我可以用正确的参数调用p.func(…)
?如果没有,那就没有必要用抽象的方法了谢谢。嵌套类的定义在所有子类中都是不同的。所以我不能将它们作为单独的静态类。你能想出一个更好的方法来改进设计吗?既然如此,设计的问题是为什么你需要在父级中使用抽象方法?假设我有Parent p=…
但我不知道它的类型,我可以用正确的参数调用p.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;
}
}