具体的内容可以看上面这篇文章,下面只是概括出来几个点:
1:Java之父,James Gosling在1995年的一份白皮书中给出了关于为什么不支持多继承。
“JAVA omits many rarely used, poorly understood, confusing features of C++ that in our experience bring more
grief than bene?t. This primarily consists of operator overloading (although it does have method overloading), multiple inheritance,
and extensive automatic coercions.”
主要就是说,Gosling认为,多继承是一种很少使用,并且很容易混淆的特性,所以Java语言就像删除操作符重载特性一样删除了多继承这种特性。
2:Java是通过接口实现多继承的说法,有待商榷。
这一段,原作者写的比较混乱,他的主要观点是:接口是为了给对象添加属性或者行为的;而继承是指从父类中完全自由的获取实现。
3:多继承,作者有一个形象的图片示意,如下,珀伽索斯(生有双翼的神马,被其足蹄踩过的地方有泉水涌出,诗人饮之可获灵感)是典型的多继承,继承了骏马的身体,以及雄鹰的翅膀。
4、然后作者总结说,为什么不支持多继承,是Java创建者基于设计的一种考虑,主要是两个点:语言要简单易用,以及摒弃极少使用并且容易产生混淆的一些特性。
两个例证:钻石问题(菱形继承问题)、几乎没有人遇到过需要多继承的场景,即使有,也可以通过设计绕过。
总得来说,这个博文作者,是从Java创始人的一些文献中推测的原因,当然也给出了两个例证。虽然证明逻辑比较混乱,但是非常好的是已经点出来了原因:
多继承是一种极少使用还非常容易产生混淆的语言特性,在极少数需要使用的场景下,还可以通过设计来绕过(就像上面的飞马,Java中一般是把会飞的翅膀作为一个接口)。所以为了维护语言的简单易用,Java设计之初就摒弃了这种特性。