Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多重继承的Java替代方案_Java_Oop - Fatal编程技术网

多重继承的Java替代方案

多重继承的Java替代方案,java,oop,Java,Oop,因为我知道Java不支持多重继承,所以我想知道如何用Java实现这种设计: Class StudentModel extends BaseModel{ public void doSomething(){}; } Class ParentModel{ protected List<BaseModel> children = new List<BaseModel>(); public void addChild(BaseModel child){

因为我知道Java不支持多重继承,所以我想知道如何用Java实现这种设计:

Class StudentModel extends BaseModel{
   public void doSomething(){};
}
Class ParentModel{
   protected List<BaseModel> children = new List<BaseModel>();
   public void addChild(BaseModel child){
      children.add(child);
   }
   // and other parent-children related functionality
}

Class ConcreteParentModel{
    // should contain both StudentModel and ParentModel functionalily
}
Class StudentModel扩展了BaseModel{
公共无效doSomething(){};
}
类父模型{
受保护的列表子项=新列表();
public void addChild(BaseModel子项){
添加(child);
}
//和其他父子相关的功能
}
类模型{
//应在功能上同时包含StudentModel和ParentModel
}
谢谢

您应该使用一个模式


在软件工程中,适配器模式是一种软件设计模式,允许从另一个接口使用现有类的接口。它通常用于使现有类在不修改其源代码的情况下与其他类一起工作。

您可以
实现
多个接口,但只能
扩展
单个类。您可以使用带有(抖动)默认方法的接口。您始终可以使用组合而不是继承。只要让
ConcreteParentModel
有一个父对象和一个学生,并让包装器方法将调用传递给适当的实例变量即可。我的目标是实现更少的代码。实现接口不能完成这项工作。我必须为其他每一个也应该是“父”的类实现与父相关的方法。另外,包装器也不能完成这项工作,因为我必须为每个应该也是父类的派生类编写包装器代码。如果您想编写更少的代码,请使用为此目的设计的语言—JVM上还有其他语言可能会让您感兴趣。Java(语言)是为干净和健壮的代码而设计的,而不是短小的代码。谢谢,但这并不能帮助我以更少的代码结束。我计划添加更多从其他类派生的其他具体类,但所有这些类都具有“父”功能。好的。然后我将实现适配器和模式的组合。在策略模式中,我们创建了表示各种策略的对象和一个上下文对象,该上下文对象的行为随其策略对象的不同而变化。strategy对象更改了context对象的执行算法。恐怕这也没用。我需要所有继承的方法通过@jsonpropertyun对Jackson可见。幸运的是,唯一真正的解决方案是使用适配器。