高手赐教:java中为什么不支持多重继承? 为什么?给个理由先? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 记得有人说过,java是c++--, 多重继承由于其复杂性属于被减掉的部分. 符合java语言简单的特点.用Interface. to refresher(第一信仰) 我觉得你给的原因好像有点可笑, C++也难道因为你说的原因就不支持多重继承了吗? 关于如何实现你说的问题,特别是"菱形继承",你可以看看相关c++的书(如Bruce Eckel的)多重继承(MI)功能强大, 但编译实现比较复杂, 使用也比较复杂.而且会带来二义性.C++是目前唯一支持MI的OO语言(当然苛刻点讲,不完全是OO)基于以上原因,将"简单性"作为其主要特点的Java这个后来者当然抛弃MI了.虽然Java的interface能模拟MI,但还达不到c++中MI的能力.当然, 上面只是个人理解, 有问题请指正 要说为什么,就是因为Interface完全可以完成多重继承所能完成的功能,而且,Interface还可以避免因为多重继承而带来的二义性等多余的复杂问题。你可以通过实现多个接口来实现多重继承,而且接口之间也可以继承。多重继承在软件工程中也不被推荐,所以,连C#也引进了接口,而抛弃了多重继承。 //因为Interface完全可以完成多重继承所能完成的功能"完全"这个词恐怕有点大. 为什么接口是实现而不是继承,因为需要你去实现. 而继承则是继承了就"与生俱来" 像 kingfish(POWER OF JAVA) 说的,这样做实现简单,要不然就得用运行时来确定了(后期绑定)还有一点单根继承更易于实现虚拟机,特别是内存的回收(这个就不用自己过多考虑内存溢出了),对于一个对象,它的根总是Object,而如果是多重继承的话,不会只有单根的。 前面的高人都说的差不多了哦,我就来个新意一点的啊^_^JAVA设计者不希望在这个社会(JAVA)中有杂交的事情.虽然杂交可能会继承多个优良的特性,但同时可能会大大加大家族的遗传病的扩散.而且在赡养和抚养等等问题上都是个问题啊.^_^实现就不一样了哦,认干爹干妈的,有遗传病病不会给它传染,有什么好的优点可以努力地去学习实现,有利于进化论哦. 我闪~~~ 呵呵 我觉得主要还是二义性的问题,java语言当时的设计宗旨就是简单,所以就把多重继承砍掉了 避免2异性 interface可以实现你想要的 2异性就是集成class图形是菱型 照sun的讲法是避免c++那样管理多重继承的层次关系而带来的复杂性,换成用接口来实现多重继承的大部分功能。 回去看一本书 是sjcp考试用的 上面说过 菜鸟求助,求大神指点!!! 关于多文件上传顺序的问题 (IO) file input error 散分,求最新J2SE 5.0 API中文网页版下载 可视化界面开发. 初学java 请教一个比较幼稚的问题 如何开发文档管理系统? 在Java中,如何能够得到Javascript中的参数?在线送分 接口引用了其他的类吗 就构建个人互动小网站,问各路高手几个问题: 在DocumentListener中不能改变Document的内容吗?那我怎样实现JBuilder关键字变色的效果?已经没多少分了,请大家原谅! 问两个小问题 有代码
我觉得你给的原因好像有点可笑, C++也难道因为你说的原因就不支持多重继承了吗?
关于如何实现你说的问题,特别是"菱形继承",你可以看看相关c++的书(如Bruce Eckel的)多重继承(MI)功能强大, 但编译实现比较复杂, 使用也比较复杂.而且会带来二义性.
C++是目前唯一支持MI的OO语言(当然苛刻点讲,不完全是OO)基于以上原因,将"简单性"作为其主要特点的Java这个后来者当然抛弃MI了.
虽然Java的interface能模拟MI,但还达不到c++中MI的能力.当然, 上面只是个人理解, 有问题请指正
"完全"这个词恐怕有点大.
为什么接口是实现而不是继承,因为需要你去实现.
而继承则是继承了就"与生俱来"
要不然就得用运行时来确定了(后期绑定)
还有一点单根继承更易于实现虚拟机,特别是内存的回收(这个就不用自己过多考虑内存溢出了),
对于一个对象,它的根总是Object,而如果是多重继承的话,不会只有单根的。
JAVA设计者不希望在这个社会(JAVA)中有杂交的事情.虽然杂交可能会继承多个优良的特性,但同时可能会大大加大家族的遗传病的扩散.而且在赡养和抚养等等问题上都是个问题啊.^_^实现就不一样了哦,认干爹干妈的,有遗传病病不会给它传染,有什么好的优点可以努力地去学习实现,有利于进化论哦. 我闪~~~ 呵呵