一、前言
我们都知道,Java里边有一个特殊的特性的,就是支持类(注意是类,接口是可以多继承的)都单继承,那究竟是为什么,多继承不行吗?
有什么原因,下面通过一个反例,来论证下。
二、反证法
如下图,B、C都相同都方法 doSomething,并皆为D类所继承。
这时,D所继承的方法中,就出现二义性问题了,即调用父类的方法 doSomething,不知道具体执行那个父类的方法。

三、其他
Java中,通过接口都多继承,弥补这一缺陷,因为接口本身就是一种规范,不带具体实现,故不存在类这样冲突的问题。
而多继承,在C++中有详尽多用法,也带来很多坑点,Java可以说参考C++,摒弃缺点(多继承…),解决痛点(垃圾自动回收…),单继承也不一定是缺陷,它也使得类的关系不那么复杂,等等。
这些思想很重要,在面试中也经常提及。
