7

我最近遇到了一个正在考虑在下一版 C# 中添加的功能列表。其中之一称为“默认接口方法”:

https://github.com/dotnet/csharplang/blob/master/proposals/default-interface-methods.md

简而言之,它将允许您在接口本身上定义实际的方法实现,这意味着接口现在可以具有实现。既然是这种情况,并且 C# 类可以从多个接口实现/继承,那么我到底为什么要使用抽象类呢?

我唯一想到的是接口不能有构造函数,所以可能需要在抽象类构造函数中运行一些逻辑,这将证明定义抽象类是合理的。

还有其他任何人都可以想到的场景吗?

4

2 回答 2

1

通常类继承感觉像是一种分类法(x 'is a' y),而接口是行为(x 'can do' y),因此在隐含含义上有细微的差别。尽管您是对的,技术区别不太明确。

于 2017-08-11T19:12:48.863 回答
1

除了评论中提到的状态外,

Base Class

您不能从基类继承接口。接口只能继承一个接口。您将需要抽象类来从其他类派生。而且由于你不能从类继承,你不能覆盖类方法。您可以在抽象类中覆盖它。

于 2017-08-11T19:20:01.633 回答