我可以看到人们一直在询问是否应该在下一版本的C#或Java中包含多重继承。有幸拥有这种能力的C ++人说,这就像给某人一条绳子最终自我吊死。多重继承有什么问题?有没有具体的样品?
3 回答
慕后森
TA贡献1802条经验 获得超5个赞
你们提到的问题并不是很难解决。事实上,例如埃菲尔完美地做到了!(并且不引入任意选择或其他)
例如,如果你继承了A和B,两者都有方法foo(),那么你当然不希望你的类C继承A和B的任意选择。你必须重新定义foo所以它很清楚会是什么如果调用c.foo()或者你必须重命名C中的一个方法,则使用它(它可能变为bar())
另外我认为多重继承通常非常有用。如果你看一下埃菲尔的图书馆,你会发现它已经遍布整个地方,而且当我不得不回到Java编程时,我已经错过了这个功能。
catspeake
TA贡献1111条经验 获得超0个赞
当两个类B和C继承自A,而D类继承自B和C时出现歧义。如果A中的方法B和C已重写,而D不覆盖它,那么哪个版本的D继承的方法:B的那个,还是C的?
...由于这种情况下类继承图的形状,它被称为“钻石问题”。在这种情况下,A级位于顶部,B和C分别位于其下方,D将两者连接在一起形成菱形......
添加回答
举报
0/150
提交
取消