【问题标题】:Extends two classes扩展两个类
【发布时间】:2010-11-03 16:42:08
【问题描述】:

我有两个类 ModalWinodw 和 SkinnableWindow 都在扩展 Window 类。我想创建具有两个类的功能的类,但在 Java 中,类只能扩展一个超类。那么如何解决呢?

【问题讨论】:

  • 这是为什么接口有时比类更好的一个例子。
  • 这也是我不喜欢Java“OO”的一个例子:-)

标签: java oop multiple-inheritance


【解决方案1】:

这是一个短语“Composition over Inheritence”实际上适合的情况......

我会创建一个接口,结合我想要适应的两个类的功能。

然后我将创建一个实现我的新接口的类。该类将包含 ModalWindow 和 SkinnableWindow 的实例。根据调用的功能,我的类只需将方法调用传递给适当的类,在需要时利用每个类的功能。

【讨论】:

    【解决方案2】:

    Composition(“基”类中的至少一个,可能两个都是成员对象)。并根据需要提供大量代理(一些编辑会在这里为您提供帮助)。

    雅虎 Java OO!

    编辑:虽然组合是这里的“必经之路”(无需重新设计类层次结构),但它有一些特定的限制,具体取决于接口和主格名称的使用方式。如果您需要在您几乎处于受伤世界的任何地方传递“特定”类型(ModalWindow 或 SkinnableWindow),因为您的新班级最多可以将其中一个作为祖先(因此,如果它是一个或更少,您可以能够溜过去)。使用接口并尽可能通用类型可以减少这种伤害。

    编码愉快。

    【讨论】:

      【解决方案3】:

      你可以使用合成。让你的类有一个(或两个)作为字段,并将它们的方法公开为传递方法。

      【讨论】:

        猜你喜欢
        • 2011-09-29
        • 2015-09-29
        • 2013-06-18
        • 2021-03-14
        • 1970-01-01
        • 1970-01-01
        • 2016-03-25
        • 1970-01-01
        • 2018-06-11
        相关资源
        最近更新 更多