为什么现在的面向对象编程语言都取消了多重继承?

如题为什么C++有“多重继承”,但之后的面向对象编程语言都取消了“多重继承”?到底“多重继承”有什么缺点呢?还有,如果我在有很必要使用“多重继承”的情况下该如何去做呢?比... 如题
为什么C++有“多重继承”,但之后的面向对象编程语言都取消了“多重继承”?
到底“多重继承”有什么缺点呢?
还有,如果我在有很必要使用“多重继承”的情况下该如何去做呢?
比如:我想创建一个工具类,要它既有斧头又有锤子的功能,在C++中我可以让它继承斧头类,同时也继承锤子类,但在JAVA,C#等等“单继承”的语言中如何实现呢?
展开
 我来答
dingbiyuan
2009-06-24
知道答主
回答量:9
采纳率:0%
帮助的人:6.7万
展开全部
多重继承的缺点实在是太大了,就好像是核裂变一样,用好了能发电,用不好。。。
名字冲突是一个最明显的问题,比如A中有一个f()函数,B中也有一个f()函数,C继承了A和B,那么C.f(),是调用A的呢,还是B的呢?除非拙劣地写成C.A::f()。
有时候还要处理“钻石结构”的麻烦:B继承A,C继承A,D继承B和C,那么D中就会有两个A,你会说使用虚拟继承,可是,B和C的设计者不知道有D这么回事啊!所以多重继承的类的设计就很麻烦了。

多重继承的替代:使用组合就可以了,凡是可以组合的最好使用组合,然后再考虑继承。

Java中可以使用接口的方法间接实现多重继承。
kamenkaen
2009-06-24 · TA获得超过1049个赞
知道答主
回答量:201
采纳率:0%
帮助的人:154万
展开全部
一楼正解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式