【发布时间】:2014-05-09 02:41:34
【问题描述】:
抽象类包含两种类型的方法 - 抽象(未实现)和具体(已实现)方法。而接口只包含未实现的方法。这意味着接口是抽象类的子集。那么为什么接口是在 C# (.Net) 中引入的呢?在我看来,有两个原因:
- 支持多重继承
- 支持 C# 中值类型(结构)的继承。
是否还有其他原因或一些我遗漏的隐藏概念?
【问题讨论】:
-
C#不支持多重继承。一个类可以实现多个接口并子类化一个类。这就是在语言中包含接口的充分理由。 -
我已经在我的问题中使用“多重继承”提到了这一点。请提出我提到的两点以外的其他点。
-
我再重复一遍:
C#不支持多重继承。请尽量多尊重这里的用户。毕竟,我们正在努力帮助您。 -
公平地说,“继承”和“实现”虽然我理解是不同的概念,但并不是每个人都能理解的非常微妙的区别。鉴于 C# 中的语法是相同的(与 Java 不同,Java 有两个单独的关键字),我可以理解为什么有人可能会从接口“继承”的角度来思考。鉴于此,OP 至少在他的原始帖子中暗示 C# 不支持多重继承除了通过接口。
-
您的论点的变体,@ManishDubey:由于您可以从多个接口继承但只能从单个类继承,因此类必须是接口的子集。我也希望人们不要再抱怨那个实施/继承协议。这有点像斯托曼说你不应该说
Linux,你应该说GNU slash Linux。