Java为什么不支持多继承


具体的内容可以看上面这篇文章,下面只是概括出来几个点:

1:Java之父,James Gosling在1995年的一份白皮书中给出了关于为什么不支持多继承。
     “ JAVA omits many rarely used, poorly understood, confusing features of C++ that in our experience bring more grief than benefit. 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设计之初就摒弃了这种特性。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值