为什么 Java 中不允许多继承?


前言

思考现在既定事实背后的原因


1、为什么不允许多继承?

  • 多继承会导致“钻石问题”

2、钻石问题是什么?

(1) 是什么

  • 类 B、C 继承父类 A,类 D 同时继承了 B 和 C(假设存续多继承)
  • 下述图表的形状类似于钻石(或者菱形),因此这个问题被形象地称为钻石问题(菱形继承问题)
    在这里插入图片描述

在这里插入图片描述

(2) 造成什么问题

  • 以上述例子说明:
  • 类 D 初始化时,会执行两次类 A 的初始化,造成资源浪费
  • 调用“D.xxx()”类 A 的方法将会导致一个编译错误。这是因为编译器并不知道是调用 B.getWeight() 还是调用C.getWeight()。所以,调用 getWeight 方法是不明确的故不能通过编译。这一点未实操验证

  • 参考资料:
    https://blog.csdn.net/feilzhang/article/details/80443194
    https://blog.csdn.net/weixin_34942564/article/details/114308166
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值