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

为什么java中不可能有多个继承,java,multiple-inheritance,Java,Multiple Inheritance,“为什么多重继承在java中不可能?”与这个问题有什么不同吗 “为什么java不支持多重继承?”或者两者是相互关联的。 我知道这个问题已经得到了回答,只是想找出其中的区别,如果有的话,那就是为什么 两者都是同一个问题 如果可能的话,我们最终可能会遇到著名的钻石死亡问题 Java的创建者选择不允许多重继承的原因是它可能变得非常混乱 简而言之,问题是如果一个类扩展了另外两个类,并且两个超类都有一个doStuff()方法,那么子类会继承哪个版本的doStuff()呢?这个问题可能会导致一个被称为“致命

“为什么多重继承在java中不可能?”与这个问题有什么不同吗 “为什么java不支持多重继承?”或者两者是相互关联的。
我知道这个问题已经得到了回答,只是想找出其中的区别,如果有的话,那就是为什么

两者都是同一个问题

如果可能的话,我们最终可能会遇到著名的
钻石死亡问题

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

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

因为类图的形状可以在多重继承设计中创建。当类
B
C
都扩展
A
,并且
B
C
都从
A
继承方法时,菱形就形成了。如果类
D
同时扩展了
B
C
,并且
B
C
都覆盖了
A
中的方法,那么类
D
在理论上继承了同一方法的两种不同实现。绘制为类图,四个类的形状看起来像钻石。”

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

但是多重继承是有用的,可以想象,同一个类可能希望在不同的客户机上以不同的方式表示自己。这是通过使用接口实现的。接口就像基类一样,但不携带数据和方法

当你实现一个
接口
时,你必须提供它所需要的所有成员,这很容易理解。当计算机转换到
接口
时,它所需要做的就是从类型
对象
开始,向上搜索基类,寻找实现
接口
的成员

接口完成了95%的工作—10%的大脑空间和15%的CPU空间—多重继承。接口无法完成多重继承的5%可以通过
组合
简单实现


这就是它不受支持的原因。

(换句话说,同样的事情。不可能,因为它是不允许的。)有点像元问题?!但为了帮助你,这两个问题都是一样的。@AbimaranKugathasan在我看来不是完全正确的重复;这个问题只是解决了除了接口之外实现多重继承的其他方法,没有讨论为什么多重继承不可能,因为它不受支持。原因是为什么它不被支持已经在原始问题(这似乎是一个重复的问题)中清楚地提到了为什么问题会不同?“不可能”清楚地意味着“不被支持”,反之亦然。交换一个单词不会改变问题。