探讨java与Python区别之多继承

java 专栏收录该内容
16 篇文章 0 订阅

为什么java不存在多继承

今天刚学完Python的面向对象,发现在Python中类的继承是存在多继承的,而以前学的java却不存在多继承,学过java的都知道,类与类之间只有单继承的关系,而接口与类或接口与接口之间却存在多实现,那么大家有没有考虑过,为什么类却不能存在多继承的关系呢?

1.产生的歧义

比如我们定义一个A的类,里面定义一个eat()方法,再定义一个B类和C类,也分别定义自己的eat实现方法,并且让B类和C类分别继承A类,然后我们再定义一个D类,采用多继承去继承B类和C类,如果我们只引用eat方法,这样编译器无法决定应该调用B的eat方法还是调用C的eat方法,这种问题也称为Diamond问题,但是为什么Python或者c++都可以多继承,而java不能,原因并不是技术难度,而是更多的可维护和更清晰的设计,虽然这只是java设计师确认,我只是推测。而接口只存在方法的声明,没有方法实现,所以没有任何歧义。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值