Java语言中的继承

时间:2012-02-08 11:47:19

标签: java inheritance

我们说java遵循单个继承模型,即Java类最多只能扩展一个类。然后说每个java类都继承自Object类。

假设有两个类A和B.A和B都从Object扩展。现在假设A扩展B.不暗示A具有多重继承(A是从B和类对象继承)吗?

9 个答案:

答案 0 :(得分:9)

看看传递继承之间的区别(C直接从B继承,从A传递直接继承):

enter image description here

和多重继承(C继承自A和B):

enter image description here

除了具有相同签名的方法外,所有内容都被添加,这些方法被覆盖。甚至添加了使用相同名称声明的变量,它们只是被称为“隐藏”但仍然可以使用强制转换来访问,如果它是直接父级,则可以使用超级关键字。

答案 1 :(得分:4)

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.

aa

您在问题A directly inherit B中的

Object class由B继承,而不是由A继承。这称为传递继承

答案 2 :(得分:3)

您可以拥有一个继承链,这不是多重继承。 您不能拥有一次继承多个的类。

语言禁止:

class A extends B, C
{}

答案 3 :(得分:2)

多重继承:(不支持Java)

A类扩展了对象

B类扩展了对象

C类延伸A,B

 Object
   /\
  /  \
 /    \
A      B     (Not supported by Java)
 \     /
  \   /
   \ /
    C

多级/传递性继承:(由Java支持)

B类扩展了对象

A类extedns B

 Object
    |
    |
    |
    B        (Supported by Java)
    |
    |
    |
    A

答案 4 :(得分:1)

Java类只能直接从一个类继承。在这种情况下,A不会直接继承Object,仅来自A

您是否只是从术语的角度提问,还是有一些您感兴趣的行为

答案 5 :(得分:1)

对象A扩展了扩展Object的对象B.它不是多重继承,它的层次结构

答案 6 :(得分:1)

在Java中,每个类都可以直接仅从一个父类扩展。因此,B从Object延伸,A从B延伸, xor A和B都从Object扩展。

您认为两者都是同时存在的 - 这在Java中是不可能的。

如果B从Object扩展,A从B扩展,那么是,A确实从Object继承,但每个类仍有一个父级:

class Object
 |
 +-- class B
      |
      +-- class A

换句话说,Java不支持多重继承。

答案 7 :(得分:1)

当两个类定义相同的方法并且同时覆盖diamond problem时,多重继承的主要问题是歧义。 Java不会受此影响,因为它只允许覆盖一个类。这显然是指直接覆盖,不涉及继承的层次结构。这种继承(A overring B,B overriding等)不受任何问题的影响。

答案 8 :(得分:0)

Java不允许您扩展超过1个超类。但是,一个类可以实现多个接口。您可以创建一个接口和抽象类的结构,让您无法扩展超过1个类。祝你好运!