我有两个类ModalWinodw和SkinnableWindow都在扩展Window类。我想创建具有来自两个类的函数的类,但是在Java类中只能扩展一个超类。那么如何解决这个问题?
答案 0 :(得分:3)
这种情况下,短语“Composition over Inheritence”实际上符合......
我会创建一个结合了我想要适合的两个类的功能的接口。
然后我会创建一个实现我的新界面的类。该类将包含ModalWindow和SkinnableWindow的实例。根据调用的函数,我的类只需将方法调用传递给适当的类,在需要时利用每个类的功能。
答案 1 :(得分:2)
Composition(“基础”类中至少有一个,可能两个都是成员对象)。根据需要有很多代理(有些编辑会在这里帮助你)。
Yahoo Java OO!
编辑虽然合成是“走的路”(没有重新设计类层次结构),但它有一些特定的限制,具体取决于接口和名词的使用方式。如果你需要在任何地方传递“特定”类型(ModalWindow或SkinnableWindow),因为你的新课程最多可以有一个作为祖先(如果它是一个或更少,你可以能够滑倒)。使用接口并尽可能一般关于类型可以减少这种伤害。
快乐的编码。
答案 2 :(得分:1)
你可以使用作文。让你的类有一个(或两个)作为字段,并将它们的方法公开为传递方法。