两次扩展Java类

时间:2013-01-25 12:02:08

标签: java class extend

  

可能重复:
  Alternative of Multiple inheritance in Java
  Multiple inheritance in Java?

我有一个像这样的代码:

public class myApplet extends JApplet

我有兴趣添加另一个像这样的扩展:

public class myApplet extends JApplet, extends Object implements Serializable

这可以通过某种方式完成吗?

6 个答案:

答案 0 :(得分:1)

Java没有多重继承,任何类都延伸Object,所以在这种情况下它没用。

答案 1 :(得分:1)

Java没有多重继承,但您可以实现多个接口。

public class myApplet extends JApplet implements Serializable, SomeThingElse

您不需要扩展Object,因为所有类都会扩展它。

如果您在两个类中有方法的情况下,您希望在一个类中共享,请考虑定义使用这两个类的第三个类,如果函数集是内聚并执行不同的操作。不要试图结合课程来获得他们的权力。创建单独的类来处理不同的问题,并将它们的实例存储在更高阶的类中。

如果您有两个执行类似功能的类,则可以将其公共代码抽象为超类。因此,A类将扩展B类,然后您将扩展C类并在那里添加更多细节。

如果你有两个结构非常相似但在不同的数据结构或算法上运行的类,那么你可以考虑创建一个它们都实现的接口。一个很好的例子是具有drive()方法的Vehicle接口。 Cardrive()的实现方式不同于Motorbike

要扩展这个最后的想法,如果这些类将共享公共代码,并且可以说“A Car a Vehicle”和“A Motorbike a Vehicle” ,那么使用继承可能比接口更受欢迎,CarMotorbike都扩展了Vehicle及其抽象函数。

答案 2 :(得分:1)

你不能在Java中扩展多个类。但是你可以实现多个接口。

但是,如果您的父母是来自另一个父母的孩子,那么您当然也在扩展层次结构中的所有课程。

如果不添加extend语句,则会自动选择Object作为父级。对象是超级父对象,在每个层次结构中都可以找到它。因此,在您的情况下,您可以跳过“extends Object”,因为hirachy如下:

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Panel
              extended by java.applet.Applet
                  extended by javax.swing.JApplet
                      extended by your.package.myApplet

(见http://docs.oracle.com/javase/6/docs/api/javax/swing/JApplet.html

答案 3 :(得分:0)

你不能在java中扩展类两次......然而,java中的每个类都会立即从Object类继承,所以你不必使用Object类扩展你的类;)

答案 4 :(得分:0)

不,Java不支持多重继承。但是每个类都会自动从Object继承。

答案 5 :(得分:0)

Java不支持多重继承,可以使用多个接口