每个类都继承Object类

时间:2013-07-06 16:52:35

标签: java

在java中,Object类是所有类的超类。所以假设,如果我从A继承B类,即A - > B,那么它不像多重继承吗?

Object->A \
            B
   Object /

Java不支持多重继承,对吧? 那怎么可能呢?那不会产生钻石依赖问题吗?

如果问题太天真,请道歉。

4 个答案:

答案 0 :(得分:7)

  

在[J] ava中,Object类是所有类的超类。

您对此声明的理解不正确。 Object是任何类的层次结构的根,但所有类的 direct 1 超类。实际上,Object只是从Object显式派生的类或者没有明确列出另一个超类的类的直接超类。否则,它位于层次结构链的较高位置。所以,每个班级(Object除外)都有一个且只有一个直接的超级班级,而超级班级要么是Object,要么是其他班级,但是如果你按照班级的方式工作,那么继承链最终你会点击Object(我们所说的Object是每个类的超类)。

  

所以假设,如果我从B继承了课程A,即A - > B,那么它不像多重继承吗?

然后在这种情况下,层次结构B派生自A派生自Object。层次结构 A派生自ObjectB派生自AObject。但是,ObjectB层次结构的根,因为它是任何类的层次结构的根。

  

Java不支持多重继承,对吧?

正确。

  

那怎么可能呢?

您的问题基于错误的理解。同样,Object 每个类的直接超类。多重继承意味着不止一个直接超类,并且在Java中严格禁止,但与Object一致是每个类的超类(但不一定是直接超类)。

1 :有些人也使用术语"立即"对于任何类的直接超类。 Java文档使用" direct",所以我们将在这里使用该术语。

答案 1 :(得分:1)

Nop,是传递性属性

B extends A extends Object 只有单一继承涉及。

可能会让您感到困惑

  

(B是A)(A是对象)然后(B是对象)。

所以B确实是一个Object,但它是一个对象,因为A是一个Object。假设A不是对象,那么B就不会成为对象。

答案 2 :(得分:0)

图像错误。 B类继承自A,它继承自Object。没有涉及多重继承。

答案 3 :(得分:0)

Object不是所有其他类的直接超类;这是他们的终极祖先类。这是你要找的图片。

                             Object
                            /     
                           A      
                          /
                         B

如您所见,它是一棵树,树上不会出现钻石问题。