前言
思考现在既定事实背后的原因
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