我非常了解关于为什么接口继承优于多重继承的传统争论,这里已经有一篇文章:C# 应该有多重继承吗? https://stackoverflow.com/questions/191691/should-c-include-multiple-inheritance
但根据 Stroustrup 的说法,微软和 Sun 决定摆脱多重继承的真正原因是他们这样做既得利益:他们没有将功能放入语言中,而是放入框架中,这样人们就可以与他们的平台联系起来。在语言标准水平上具有相同能力的人。
你怎么认为 ?
为什么 Sun 和 Microsoft 认为开发人员太不成熟而不能自己做出选择?
以上是我对他所说内容的明确解读。当然,他确实以一种更政治正确的方式这么说:)
摘自《与 Bjarne Stroustrup 的对话》http://www.artima.com/intv/modern.html http://www.artima.com/intv/modern.html
人们非常正确地说你
不需要多重继承,
因为你可以做的任何事情
你也可以做多重继承
具有单一继承性。你只需使用
我提到的委托技巧。
此外,您不需要任何
继承,因为任何事情
你可以用单一继承来做
也无需继承
通过类转发。实际上,
你也不需要任何课程,
因为你可以用
指针和数据结构。但为什么
你愿意这样做吗?什么时候
使用语言方便
设施?您什么时候更喜欢
解决方法?我见过这样的案例
多重继承很有用,并且
我什至见过一些案例
复杂的多重继承是
有用。一般来说,我更喜欢使用
该语言提供的设施
做解决方法。
摘自《Developpeur Reference》对 Bjarne Stroustrup 的采访》
http://www2.research.att.com/~bs/nantes-interview-english.html http://www2.research.att.com/~bs/nantes-interview-english.html
您始终可以将使用多重继承的示例重写为仅使用单继承(通过使用转发函数)。然而,结果通常是一个更长的示例,不太直接地反映设计,并且更难以维护。请注意,您还可以使用相同的技术将使用单继承的每个示例重写为不使用继承的示例,并且对代码清晰度产生相同的负面影响。不支持多重继承的语言的表达能力根本不如支持多重继承的语言,从而迫使程序员偶尔使代码复杂化。
...
人们经常谈论框架,但历史上充斥着不符合他们期望的框架。我见过成功的框架,但它们的范围通常有限。我对“通用”框架持怀疑态度,当此类框架是与其他供应商的类似框架竞争的平台供应商的产品时更是如此。作为用户,我更愿意尽可能保持与供应商的独立性。
我希望看到库提供对框架更清晰、更通用的访问——而不是与单一框架紧密联系的语言。