默认情况下,任何类都扩展Object类。这不是说java支持多重继承吗?

时间:2014-10-23 12:41:58

标签: java oop inheritance

每个人都知道在java中我们只能扩展“ONE”类。

但为了理解:

  1. 任何Java类都隐式扩展了java.lang.Object
  2. 如果A类扩展了B类,那么A类是否会隐式地扩展B类和java.lang.Object?
  3. 在这种情况下,我们默认扩展两个类。

    如果Java不支持多重继承,为什么允许这样做?

4 个答案:

答案 0 :(得分:3)

不,Java阻止类直接扩展多个超类。 A类可以扩展扩展C类的B类。这仍然是单继承。所有类都形成一个树,其中根是Object类,每个类(Object除外)只有一个直接超类(或父类),它是Object或其他类。

答案 1 :(得分:2)

这将是多级继承。 你错误地将多个错误归结为多个级别。

A->B->C //This is multilevel inheritance which you are talking about

多重继承就像(在java中不可能)

     A
   |   |
   B   C

Java不支持多重继承,这使得任何模糊的情况都会逐渐消失。但仔细实施实现关键字以实现确实会产生多重继承感

<强>结论:

A类可以扩展一个扩展了C类的B类。这仍然是单继承。所有类都形成一个树,其中根是Object类,每个类(Object除外)只有一个直接超类(或父类)

答案 2 :(得分:0)

每当A类扩展B类时,A类不再扩展Java.lang.Object,但是:由于每个类都扩展了Java.lang.Object,如前所述,B类将扩展Java.lang.Object,因此A类仍然是该特定类的子类。

答案 3 :(得分:0)

“默认情况下隐式扩展Object”意味着如果在类声明中没有看到extends关键字,那么它“不可见但直接”扩展了Object。如果看到extends关键字,则该类不直接扩展Object,而是扩展子句中提到的类。现在你必须遍历那个层次结构,在某一点上,你会发现一个没有“extends”的父类,并且隐式继承再次出现。

层次结构中的所有类可传递扩展Object,但只有root才能直接执行。传递上,因为所有子类都继承了父类的所有特征,包括它们的父类和实现的接口。