【问题标题】:How to make a Java class extend 2 other classes?如何使 Java 类扩展 2 个其他类?
【发布时间】:2014-12-30 10:02:00
【问题描述】:

在我的程序中,我已经在扩展类 Applet ,但我也想使用我在另一个类中定义的方法。我知道我不能同时扩展 2 个类,有没有办法解决这个问题? 我需要能够执行此操作才能继续,谢谢。

这是我的代码:

import java.applet.Applet;
import java.awt.*;
import java.awt.Graphics;

public class Grape extends Applet /* I want to extend another class here */{

    public void paint (Graphics page) 
    {
        final int MID = 150;
        final int TOP = 50;

        setBackground (Color.WHITE);

        page.drawLine (60, 60, 750, 60); //Line
        page.drawString("X discplacement = " + xDisplacement , 30, 30);



    }

}

【问题讨论】:

  • 您可以创建该类的对象来访问这些方法
  • Java Multiple Inheritance 的可能重复项
  • 不,您不需要“继续”。 java 中没有多重继承(在许多其他语言中也没有)。与其希望不存在,不如使用委托/组合并继续取得进展。在您浪费时间寻求不可能的情况下,您本可以实施解决方案。
  • 您可能想使用interface,它们的工作方式类似于超类,但不提供方法或变量值的默认实现。

标签: java class inheritance


【解决方案1】:

首先:你的问题的标题是误导性的。请为您的问题选择一个更好的标题。

第二:您可以通过引用其他类的功能将其他类的功能注入到您的“Grape”类中。

有时,重新设计您的类、它们之间的关系以及重新设计应用程序的流程,以更方便的方式解决您的问题。

【讨论】:

    【解决方案2】:

    因为钻石问题。 Java 通过强制类的单一继承来避免菱形问题。

    JAVA 省略了许多很少使用、难以理解、令人困惑的特性 根据我们的经验,C++ 带来的痛苦多于好处。这 主要由运算符重载组成(尽管它确实有 方法重载)、多重继承和广泛的自动 强制。

    -- James Gosling,关于钻石问题

    请访问以下链接以了解有关该问题的更多信息。

    SO 上回答了类似的问题

    外部链接:-

    [编辑]

    How to implement multiple inheritance in Java? 接口

    Java 允许接口的多重继承。

    【讨论】:

      【解决方案3】:

      您可以让您的其他类扩展 Applet,然后让“Grape”扩展您的其他类。但是,当然,有时这并不是您所需要的。

      您还可以在 Grape 中存储其他类的实例。但这也不能完全解决问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-17
        • 2015-03-18
        • 1970-01-01
        相关资源
        最近更新 更多