如何解释Java中的多重继承

Sac*_*n J 10 java

实际上这个问题是由一位采访者提出的

问:你怎么能说java不支持多重继承?如果Object类是java中所有类的父类.

我对这个问题没有答案.

这意味着没有关于java概念的明确想法:-(

例如:如果A延伸B

这里A已经扩展了Object类.对?现在它是如何工作的?

请分享你的答案..

Mer*_*ham 13

多重继承是关于多重直接继承的.

单个类不能有两个直接父类.不过,它可以有一个祖父母班.

A extends B并且B extends C,一样A extends both B and C.

不允许这样做的原因是为了简单起见,例如:

A extends both B and C

B extends D

C extends D
Run Code Online (Sandbox Code Playgroud)

如果你有这种情况,那么你有这个代码:

A a = new A();
a.someAbstractOrVirtualMethodOnD();
Run Code Online (Sandbox Code Playgroud)

...你谈论B的实施someAbstractOrVirtualMethodOnD(),或C同一方法的实现?哪个应该叫?(提示:没有很好的答案)

所以,Java禁止它.

注意,如果你有implement多个接口,你可以获得类似于多重继承的东西.但由于只有一个具体的实现,所以对于被调用的东西没有混淆.


Sur*_*tta 8

最重要的是保持语言设计简单

我定期关注的博客示例.

在此输入图像描述

1)我们有两个继承自A的BC类.

2)假设BC重写了一个继承的方法,并且它们提供了自己的实现.

3)现在D继承了BC进行多重继承.D应该继承那个重写方法,将使用哪个重写方法?它会来自B还是C

在这里,我们有一个模棱两可.

有任何方法可以克服这个问题,我们有接口多级继承.

编辑:

And here A is already extending Object class.
Run Code Online (Sandbox Code Playgroud)

从来没有被称为Multiple inheritance.这就是所谓的Multi level inheritance.

在多层次,

涉及许多类inheritance,但只有一个类扩展one.最低subclass可以利用其所有super classes内容.


Abu*_*kar 7

多重继承意味着单个类可以从多个类继承.换句话说,它可以有多个父类.

对于Object面试官引用的课堂例子,有两种可能性:

  1. 面试官自己对多个父类(多重继承)和多个子类感到困惑.

  2. 或者他试图欺骗你使用这个问题

父类可以有许多子类,并且与多重继承无关.


归档时间:

查看次数:

10352 次

最近记录:

11 年,8 月 前