Java的异常功能,其中可以看到多重继承

时间:2014-01-08 06:57:23

标签: java inheritance

Oracle文档非常明确地指出Java语言没有多重继承功能,即在Java中声明的任何类都不能从两个单独的类继承功能。 但是有一个声明,Class Object是用户创建的每个其他类的超类。 考虑一个示例类,如下所示:

Class Base {
.....
}

Class Derived extends Base {
.....
}

现在,如果我们查看Class Derived,那么可以清楚地看到它继承自Class Base和Class Object,那么证明了Java确实具有多重继承。

从Oracle网站的某个页面提供的解决方案

Excepting Object, which has no superclass, 
every class has one and only one direct superclass (single inheritance). 
In the absence of any other explicit superclass, 
every class is implicitly a subclass of Object.

这意味着任何没有单继承可用的类只有一个带有Class Object的隐式单继承。

参见 http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html

5 个答案:

答案 0 :(得分:2)

可以将代码修改为

class Base extends Object{
.....
}

class Derived extends Base {
.....
}

因为只有Base(而不是Derived)扩展了Object,所以Derived类继承了Object Base,没有多重继承存在。

答案 1 :(得分:0)

如果一个class有(extends)多个父class,我们将其称为multiple inheritance。在Java中从未有过,在这种情况下只有一个multi level inheritance而不是multiple inheritance

答案 2 :(得分:0)

这是多级继承而非多重继承的情况。

  

多重继承:我们可以在同一个类中继承多个类。

enter image description here

  

多级继承:一个类只能继承一个基类   class和派生类可以成为其他类的基类

enter image description here

答案 3 :(得分:0)

在Java中,您不能从2个单独的类层次结构扩展。但是,您可以在层次结构中拥有多个类。一个类定义中只能有一个“扩展”。

例如,Mammal extends AnimalDog extends Mammal是可以接受的。狗将获得哺乳动物和动物的行为和状态(通过哺乳动物)。

不允许的是一个扩展多个类的类。

因此,在您的示例中,如果您有2个基类BaseA和BaseB,则类Derived不能同时扩展BaseA和BaseB。

答案 4 :(得分:0)

我认为你误解了继承。

Multiple inheritance允许类继承两个不同类的属性。从维基百科,这里是一个这样的层次结构的例证(称为"钻石问题"):

enter image description here

请注意:D继承自B和C.

为了更好地说明,多重继承将允许您拥有这样的类结构:

public class Bike {
    // properties of a bike
}

public class Car {
    // properties of a car, namely that it has a motor
}

public class Moped extends Bike, Car {
    // properties inherited combine that it is both a Bike and a Car
}

Java类现在连接的当前方式是它们的继承是hierarchal;也就是说,一个类可能只有一个父类。

以这种方式思考继承的好方法是" is-a"关系测试。

对于你的例子:

  • Derived Base
  • Base Object
  • Derived Object