Java 将多个继承对象添加到容器类

Java 将多个继承对象添加到容器类,java,inheritance,abstract-class,containers,implementation,Java,Inheritance,Abstract Class,Containers,Implementation,我有一个正在进行中的程序,但我似乎无法总结如何将某些类添加到容器中 我正在为一个2D用户创建一个java程序。我有一个抽象类BodyPart(所有身体部位共享),DrawablePart和ContainerPart类实现了抽象类,其中DrawablePart包括实现的类,如head、legs、Foot等;容器部分包括实现的类,如person>upperbody和lowerbody 我唯一要做的就是创建从容器类派生的upperbody和lowerbody类,容器类有一个BodyParts数组 假设

我有一个正在进行中的程序,但我似乎无法总结如何将某些类添加到容器中

我正在为一个2D用户创建一个java程序。我有一个抽象类BodyPart(所有身体部位共享),DrawablePart和ContainerPart类实现了抽象类,其中DrawablePart包括实现的类,如head、legs、Foot等;容器部分包括实现的类,如person>upperbody和lowerbody

我唯一要做的就是创建从容器类派生的upperbody和lowerbody类,容器类有一个BodyParts数组

假设我正在研究LowerBody容器,它源自ContainerPart。如何可能有一个可以包含腿和脚数组(从DrawablePart派生)的LowerBody构造函数?我想让下半身和上半身从Avatar container派生,它派生自ContainerPart

我知道在不展示我的代码的情况下很难得到答案,但我想有人可以用我在下面的类中创建的UML图向我解释

这是UML图

下面是一个ContainerPart构造函数,其中包含一系列BodyPart(super来自BodyPart),这正是我想要的,但我需要LowerBody构造函数中的某些部分,如腿和脚:

    public ContainerPart(String name, String color, int xCoord, int yCoord, BodyPart[] yourParts) {
        super(name, color, xCoord, yCoord);
        parts = yourParts;
}
在我的容器类中,我有一个BodyParts数组的实例字段,如上面的构造函数所示。但当我尝试使用多个衍生车身部件时,我得到了以下结果:


但是,如果我只有一个,在super()中说“yourFoot”,它会起作用。

也许是个愚蠢的问题。为什么不让LowerBody扩展头像呢?您仍然可以享受ContainerPart的好处

或者,您可以添加新的构造函数:

public LowerBody(List<DrawableParts> parts) {

}
public下部底座(列出零件){
}

我无法将此作为注释添加到此处

如果我理解正确,您有如下内容(
您的实际构造函数有更多参数
):

现在,您要将
LowerBody
创建为:

public class LowerBody extends ContainerPart {

    public LowerBody(Legs[] legs, Feet[] feet, String name, String color, int xCoord, int yCoord){
         super(name, color,xCoord, yCoord, legs);
         ........
         .......
    }

    public LowerBody(Legs leg, Feet feet, String name, String color, int xCoord, int yCoord){
        super(name, color,xCoord, yCoord, new BodyPart[]{leg, feet});
    }
}

如果是,问题是什么?它应该很好用。如果我遗漏了什么,请告诉我。

我认为可绘制部分应该是一个接口,而不是一个类。这会更有意义,但我现在需要关注容器部分。它仍然会有所帮助。当你想到它的时候,所有的东西都应该是一个容器,而且大多数都应该是可绘制的。也就是说,分别对人和表示进行建模。你也可以考虑“赞成作文而不是继承”的规则。例如,您可以使用一个渲染器,它知道如何绘制一个人,而不是强制一个人可绘制。容器不可绘制,在知道如何将某些身体部位对象添加到上半身和下半身之前,我不想在绘图部分工作。
public class LowerBody extends ContainerPart {

    public LowerBody(Legs[] legs, Feet[] feet, String name, String color, int xCoord, int yCoord){
         super(name, color,xCoord, yCoord, legs);
         ........
         .......
    }

    public LowerBody(Legs leg, Feet feet, String name, String color, int xCoord, int yCoord){
        super(name, color,xCoord, yCoord, new BodyPart[]{leg, feet});
    }
}