【发布时间】:2013-01-07 02:17:51
【问题描述】:
The C# Programming LanguageKrzysztof Cwalina 在注释中声明:
我们明确决定不添加对多重继承的支持 [...] 缺乏多重继承迫使我们添加了 接口,这反过来又负责与问题 框架的演变,更深的继承层次结构,以及许多 其他问题。
接口是面向对象编程语言的核心概念。我不遵循“强迫我们添加接口的概念”的意思
Krzysztof 是否意味着必须针对接口的使用做出某些设计决策,否则将使用多重继承?或者,他的意思是 interface 是因为缺少多重继承而被引入 C# 的?可以举个例子吗?
【问题讨论】:
-
我认为引入它们是为了解决缺乏多重继承的问题,因为没有它们,许多模式将难以采用。
-
这更适合程序员,因为这不是一个实际问题。
-
我不认为接口是面向对象编程的基础。你做的很有趣。
-
@ToolmakerSteve:我也不认为类继承是面向对象的基础。接口和类继承都是名义子类型的特殊情况,这也不是面向对象的基础。这样想:有没有没有类继承的面向对象语言?当然。有没有没有接口的 OO 语言?当然。所以两者都不是基本的。
-
@EricLippert - 谢谢,这对我来说更有意义。鉴于上下文是关于类继承的讨论,我认为您是在建议类继承相对于 OO 更为基本。考虑到这一点,我同意接口与 OO 正交——它们是一种契约形式。
标签: c# oop interface multiple-inheritance