码迷,mamicode.com
首页 > 编程语言 > 详细

Java为什么不支持多继承

时间:2015-06-01 22:38:33      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:java   gosling   继承   语言   


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

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设计之初就摒弃了这种特性。 

Java为什么不支持多继承

标签:java   gosling   继承   语言   

原文地址:http://blog.csdn.net/allen_zhao_2012/article/details/46316401

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!