gpt4 book ai didi

oop - 多重继承批评

转载 作者:行者123 更新时间:2023-12-02 06:26:11 27 4
gpt4 key购买 nike

我当时正在研究多重继承的概念(我在愤怒中编写 C++ 代码已经快 10 年了,只是对这个概念有学术上的兴趣)。我找到了这个 reference在维基百科上。

他们列出的对 MI 的一个批评是“无法从单个类显式继承多次”。我对这种说法感到困惑,并且不能 100% 确定这是指什么。

当然,类继承描述了一个类的结构,从同一个类继承多次只会重复同一个类契约,所以我看不出它有什么好处来证明批评是正当的。显式继承会假定类函数和属性的多个实例吗?

我想了解这种批评指的是什么,以及为什么它对启用多重继承的语言隐式不可用。

最佳答案

这叫做 Diamond Problem .大多数允许 MI 的现代语言都有解决方案。

简而言之,你有这个类树:

class A { public int f = 0; };

class B extends A { f = 1; };

class C extends A { f = 2; };

class D extends B, C {};

D.f 会打印什么?如果你给 D.f 赋值,它应该存储在哪里? B(A).f 和 C(A).f 这两个字段应该合并为一个还是应该分开?如果在 B 和 C 中覆盖 A 的方法 x,D.x() 应该做什么?两个都叫?按什么顺序?返回值呢?

关于oop - 多重继承批评,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/531946/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com