为什么Java要使用单继承,而不多继承或双继承?

如题

应该是为了降低复杂性吧

降低复杂性是一个方面,实际上,在我们使用继承时,总是有一个主要方面,其他是次要方面,这样分清主次后,实现主要方面继承。

如果是多继承,使用者会根本不考虑实际场景情况,胡乱继承,反而违背OO精神,AOP就是解决其他次要方面的继承问题,AOP通过拦截和导引其他属性进入当前对象。

使用单继承,会让我们更加珍惜父类,不要随便使用继承,因为一个类继承了另外一个类,这个就可能丧失继承其他类的权力,如果随着业务变化,当前类找到了它真正的主类(通常是业务主类),这时系统就变得尴尬了,无法拓展了。

Java特点就是融合了一定设计场景进入语言,总是需要在一定前提下使用Java的一些语言特点,这也是Java很多特点是双刃剑的原因,剑走偏锋往往是高手所为,所以,用java做OO相当于拿到一把很有灵性的剑,剩余在于使剑的人,他是否有一定武功基础,他是否有灵性,他是否知道模式。

C两者都支持,这和.NET一贯路线一样,就会让差的好的都能用他,那想达到随心所欲地步就差了一点。

以上是个人看法

"如果随着业务变化,当前类找到了它真正的主类(通常是业务主类),这时系统就变得尴尬了,无法拓展了。"

在设计定型之后,才发现新的问题,例如你所说的需要拓展业务问题,java就遇到了尴尬.

如此说来,java的单继承对程序设计人员提出很高的要求.
这样似乎成了它的缺点了.

可java为何知道c++的多继承上要做改变呢?似乎说不过去,java之父当时对C++还是了解一点点的吧

java之父,James Gosling (校友)曾经说过, 如果让他再设计java, 他会取消继承, 只有interface

>如此说来,java的单继承对程序设计人员提出很高的要求.
>这样似乎成了它的缺点了

如果一定要这么说,是可以的,因为Java是一个工具,而且是一个OO工具,所以,它肯定设计为OO人员使用,而大量非OO人员就很难照顾到,所以Java是一个先进的工具,先进就不能也无法照顾落后,这不是在社会学方面可以糊弄倒倒浆糊的。

如果程序设计人员自己培养了OO设计思维,Java单继承就不是缺点,而是一种善意的提醒。
问题是:我们很多程序设计人员自己抱着数据库思维不放,无法培养OO思维,却打着以人为本,KISS等原则来否定先进的技术,这些都是我们必须认清楚的。