java继承有什么好处与坏处_C++多继承有什么坏处,Java的接口为何能摈弃这些坏处?...

实际上,C++的多继承也不能说是坏处。不论C++和Java都有各自的语言特点,所有谈不上谁更好,谁更坏。C++和Java在IT圈子内都有自己的适用领域。所依关键看代码编写者的代码驾驭能力。

多继承为人所诟病的最大坏处就是可能会出现代码二义性。如下图所示:

描述一下:

A类集成A1和A2两个类。

A1和A2均有名称为a的方法。

问题1:如果调用A类实例的名称为a的方法,那么执行的是由A1继承的方法还是由A2继承的方法?

答案:不知道呀!

总结:这就是我们经常提到的多继承的二义性问题。当然C++提供了对应的处理方法“虚基类”(自行搜索)。那么又一个问题来了。

问题2:Java中虽然类是单继承的,但是接口是多实现的啊,为什么没有类似问题呢?

答案:答案其实就是在问题中,因为Java多实现的是接口,而接口的方法是没有具体的实现的。以上图举例,如果A1和A2都是接口,且都具有名称为a的方法,A实现了A1和A2的a方法,那么还问同样的问题如果调用A类实例的名称为a的方法,那么执行的是由A1继承的方法还是由A2继承的方法?那么答案就是无所谓,因为不管是A1还是A2的方法都没有实现,最终执行的其实是A自己的方法。

综上所述:所以Java的接口不会出现多继承引起的二义性问题。

另外:C++的多继承虽然带来了二义性的问题,但是在其它方面也对代码的复用提供了一种方式。因此说不上是优点还是缺点,人各有志吧。现金在IT技术圈内,C++的地位依然很牢固,在区块链、人工智能、嵌入式开发领域均占有一定的应用比例。关于两种语言更详细的比较很多技术论坛都有详细讲解,可自行学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值