可能重复:
Alternative of Multiple inheritance in Java
Multiple inheritance in Java?
我有一个像这样的代码:
public class myApplet extends JApplet
我有兴趣添加另一个像这样的扩展:
public class myApplet extends JApplet, extends Object implements Serializable
这可以通过某种方式完成吗?
答案 0 :(得分:1)
Java没有多重继承,任何类都延伸Object
,所以在这种情况下它没用。
答案 1 :(得分:1)
Java没有多重继承,但您可以实现多个接口。
public class myApplet extends JApplet implements Serializable, SomeThingElse
您不需要扩展Object
,因为所有类都会扩展它。
如果您在两个类中有方法的情况下,您希望在一个类中共享,请考虑定义使用这两个类的第三个类,如果函数集是内聚并执行不同的操作。不要试图结合课程来获得他们的权力。创建单独的类来处理不同的问题,并将它们的实例存储在更高阶的类中。
如果您有两个执行类似功能的类,则可以将其公共代码抽象为超类。因此,A类将扩展B类,然后您将扩展C类并在那里添加更多细节。
如果你有两个结构非常相似但在不同的数据结构或算法上运行的类,那么你可以考虑创建一个它们都实现的接口。一个很好的例子是具有drive()
方法的Vehicle接口。 Car
与drive()
的实现方式不同于Motorbike
。
要扩展这个最后的想法,如果这些类将共享公共代码,并且可以说“A Car a Vehicle”和“A Motorbike a Vehicle” ,那么使用继承可能比接口更受欢迎,Car
和Motorbike
都扩展了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不支持多重继承,可以使用多个接口