修复此继承结构的最佳方法是什么?

时间:2016-04-04 13:44:52

标签: java inheritance polymorphism

我目前正在从事Java项目,我有3个类(I,H和O)继承自抽象类N.其中I和O需要类S中描述的属性,类H和O需要在类P中描述的属性。属性P和S都不能用接口制作。这会导致问题,如果我要实现这样的结构:     N - >; P     N - >;小号     和我 - > S,O - >小号     和O - > P,H - > P
但这在java中是不可能的,因为它不允许多重继承。 一个合乎逻辑的解决方案是让S从N继承P和P.但这会导致我有P属性的问题,它不需要。

我正在寻找一种干净的方式来实现这一点,谢谢你的阅读!

3 个答案:

答案 0 :(得分:3)

尝试在界面中抽象出公共属性。

答案 1 :(得分:1)

我与:“属性P和S都不能用接口制作。”

如果您需要获取字段值,只需定义要实现的方法,例如:

public interface MyInterface{
 void getPropertyOne();
 void getPropertyTwo();
}

请记住,自Java8以来,您可以在Java接口上获取默认方法,如果您需要为某些子类实现相同的实现,或者您可以使用抽象类获得类似的行为,那么它可能很有用。

答案 2 :(得分:0)

好像你需要制作PS classess单身人士并使用Composition over Inheritance。在其他意义上,您可以将PS的优势用作composite collaboratorsIO的{​​{1}}。 将N保留为抽象,但仅当H提供常用的方法和字段集时。换句话说,= N是每个类的模板。

以下是我的看法:

N