【问题标题】:Extends two classes扩展两个类
【发布时间】:2010-11-03 16:42:08
【问题描述】:
我有两个类 ModalWinodw 和 SkinnableWindow 都在扩展 Window 类。我想创建具有两个类的功能的类,但在 Java 中,类只能扩展一个超类。那么如何解决呢?
【问题讨论】:
标签:
java
oop
multiple-inheritance
【解决方案1】:
这是一个短语“Composition over Inheritence”实际上适合的情况......
我会创建一个接口,结合我想要适应的两个类的功能。
然后我将创建一个实现我的新接口的类。该类将包含 ModalWindow 和 SkinnableWindow 的实例。根据调用的功能,我的类只需将方法调用传递给适当的类,在需要时利用每个类的功能。
【解决方案2】:
Composition(“基”类中的至少一个,可能两个都是成员对象)。并根据需要提供大量代理(一些编辑会在这里为您提供帮助)。
雅虎 Java OO!
编辑:虽然组合是这里的“必经之路”(无需重新设计类层次结构),但它有一些特定的限制,具体取决于接口和主格名称的使用方式。如果您需要在您几乎处于受伤世界的任何地方传递“特定”类型(ModalWindow 或 SkinnableWindow),因为您的新班级最多可以将其中一个作为祖先(因此,如果它是一个或更少,您可以能够溜过去)。使用接口并尽可能通用类型可以减少这种伤害。
编码愉快。
【解决方案3】:
你可以使用合成。让你的类有一个(或两个)作为字段,并将它们的方法公开为传递方法。