java是修复此继承结构的最佳方法?
我目前正在从事一个Java项目,我有3个类(I、H和O),它们继承自抽象类N。其中,I和O需要类S中描述的属性,H和O需要类p中描述的属性。属性p和S都不能通过接口生成。这导致了一个问题,如果我要实现这样的结构:
N->;P
N->;s
而我->;S、 O->;s
和O->;P、 H->;P
但这在java中是不可能的,因为它不允许多重继承。
一个合乎逻辑的解决方案是让S从P继承,P从N继承。但这会导致问题,我有P的属性,而它不需要这些属性
我正在寻找一个干净的方法来实现这一点,谢谢你的阅读
# 1 楼答案
I与“属性p和S都不能通过接口生成”有关
如果需要获取字段值,只需定义要实现的方法,如:
请记住,由于Java8可以在Java接口上获得默认方法,如果您的一些子类需要相同的实现,或者您可以使用抽象类获得类似的行为,那么它可能会很有用
# 2 楼答案
似乎您需要将
P
和S
无类的单例设置为Composition over Inheritance
。从另一个意义上讲,你可以把P
和S
作为I
、O
和H
的composite collaborators
来使用它们。 将N保留为抽象,但前提是N
提供了一组通用的方法和字段。。换句话说,=N
是每个类的模板以下是我的看法:
# 3 楼答案
尝试抽象接口中的公共属性