为了账号安全,请及时绑定邮箱和手机立即绑定

多重继承的确切问题是什么?

多重继承的确切问题是什么?

我可以看到人们一直在询问是否应该在下一版本的C#或Java中包含多重继承。有幸拥有这种能力的C ++人说,这就像给某人一条绳子最终自我吊死。多重继承有什么问题?有没有具体的样品?
查看完整描述

3 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

你们提到的问题并不是很难解决。事实上,例如埃菲尔完美地做到了!(并且不引入任意选择或其他)

例如,如果你继承了A和B,两者都有方法foo(),那么你当然不希望你的类C继承A和B的任意选择。你必须重新定义foo所以它很清楚会是什么如果调用c.foo()或者你必须重命名C中的一个方法,则使用它(它可能变为bar())

另外我认为多重继承通常非常有用。如果你看一下埃菲尔的图书馆,你会发现它已经遍布整个地方,而且当我不得不回到Java编程时,我已经错过了这个功能。


查看完整回答
反对 回复 2019-08-31
?
catspeake

TA贡献1111条经验 获得超0个赞

当两个类B和C继承自A,而D类继承自B和C时出现歧义。如果A中的方法B和C已重写,而D不覆盖它,那么哪个版本的D继承的方法:B的那个,还是C的?

...由于这种情况下类继承图的形状,它被称为“钻石问题”。在这种情况下,A级位于顶部,B和C分别位于其下方,D将两者连接在一起形成菱形......


查看完整回答
反对 回复 2019-08-31
  • 3 回答
  • 0 关注
  • 664 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信