我目前正在从事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属性的问题,它不需要。
我正在寻找一种干净的方式来实现这一点,谢谢你的阅读!
答案 0 :(得分:3)
尝试在界面中抽象出公共属性。
答案 1 :(得分:1)
我与:“属性P和S都不能用接口制作。”
如果您需要获取字段值,只需定义要实现的方法,例如:
public interface MyInterface{
void getPropertyOne();
void getPropertyTwo();
}
请记住,自Java8以来,您可以在Java接口上获取默认方法,如果您需要为某些子类实现相同的实现,或者您可以使用抽象类获得类似的行为,那么它可能很有用。
答案 2 :(得分:0)
好像你需要制作P
和S
classess单身人士并使用Composition over Inheritance
。在其他意义上,您可以将P
和S
的优势用作composite collaborators
,I
和O
的{{1}}。
将N保留为抽象,但仅当H
提供常用的方法和字段集时。换句话说,= N
是每个类的模板。
以下是我的看法:
N