为什么在java中不可能有多个继承

时间:2014-06-16 05:16:02

标签: java multiple-inheritance

“为什么java中不可能进行多重继承?”与问题有任何不同  “为什么java中不支持多继承?”或两者都是相互关联的。 我知道这已经得到了解答,只是寻找差异,如果没有答案的原因。

1 个答案:

答案 0 :(得分:2)

两者都是同一个问题。

如果可能,我们最终可能会使用着名的Diamond death problem

Java创建者选择不允许多重继承的原因是它可能变得非常混乱。

简而言之,问题是如果一个类扩展了另外两个类,并且两个超类都有一个doStuff()方法,那么子类继承哪个版本的doStuff()?这个问题可以导致一种被称为“致命的死亡钻石”的场景,

由于可以在多继承设计中创建的类图的形状。当类BC都扩展A时形成菱形,BC都继承A的方法。如果班级D同时延伸BCBC都会覆盖A中的方法,班级{{1}理论上,它继承了同一方法的两种不同实现。绘制为类图,四个类的形状看起来像钻石。“

因此,在Java中,为简单起见,您只有一个基类。搜索基类是从上到下的线性搜索,简单,快速和高效。

但是多重继承很有用,可以想象同一个类可能希望以不同的方式向不同的客户端表示。这是通过使用接口完成的。接口就像一个基类,但没有数据,也没有方法。

实施D时,您必须提供所需的所有成员,这很容易理解。当计算机转换为interface时,它需要做的就是从类型interface开始,向上搜索基类,寻找实现object的基类。

接口在10%的大脑空间和15%的CPU空间中完成95%的工作多重继承。接口不能执行多重继承的5%可以由interface简单地实现。

这就是为什么它不受支持。