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

我可以看到人们一直在询问是否应该在下一版本的C#或Java中包含多重继承。有幸拥有这种能力的C ++人说,这就像给某人一条绳子最终自我吊死。

多重继承有什么问题?有没有具体的样品?


幕布斯6054654
浏览 670回答 3
3回答

慕后森

你们提到的问题并不是很难解决。事实上,例如埃菲尔完美地做到了!(并且不引入任意选择或其他)例如,如果你继承了A和B,两者都有方法foo(),那么你当然不希望你的类C继承A和B的任意选择。你必须重新定义foo所以它很清楚会是什么如果调用c.foo()或者你必须重命名C中的一个方法,则使用它(它可能变为bar())另外我认为多重继承通常非常有用。如果你看一下埃菲尔的图书馆,你会发现它已经遍布整个地方,而且当我不得不回到Java编程时,我已经错过了这个功能。

catspeake

当两个类B和C继承自A,而D类继承自B和C时出现歧义。如果A中的方法B和C已重写,而D不覆盖它,那么哪个版本的D继承的方法:B的那个,还是C的?...由于这种情况下类继承图的形状,它被称为“钻石问题”。在这种情况下,A级位于顶部,B和C分别位于其下方,D将两者连接在一起形成菱形......
打开App,查看更多内容
随时随地看视频慕课网APP