在java中,Object类是所有类的超类。所以假设,如果我从A继承B类,即A - > B,那么它不像多重继承吗?
Object->A \
B
Object /
Java不支持多重继承,对吧? 那怎么可能呢?那不会产生钻石依赖问题吗?
如果问题太天真,请道歉。
答案 0 :(得分:7)
在[J] ava中,
Object
类是所有类的超类。
您对此声明的理解不正确。 Object
是任何类的层次结构的根,但不所有类的 direct 1 超类。实际上,Object
只是从Object
显式派生的类或者没有明确列出另一个超类的类的直接超类。否则,它位于层次结构链的较高位置。所以,每个班级(Object
除外)都有一个且只有一个直接的超级班级,而超级班级要么是Object
,要么是其他班级,但是如果你按照班级的方式工作,那么继承链最终你会点击Object
(我们所说的Object
是每个类的超类)。
所以假设,如果我从
B
继承了课程A
,即A
- >B
,那么它不像多重继承吗?
然后在这种情况下,层次结构B
派生自A
派生自Object
。层次结构不 A
派生自Object
,B
派生自A
和Object
。但是,Object
是B
层次结构的根,因为它是任何类的层次结构的根。
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
如您所见,它是一棵树,树上不会出现钻石问题。