如果在C#8.0中实现默认接口方法,为什么我需要抽象类?

时间:2017-08-11 18:44:21

标签: c# c#-8.0

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

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

简而言之,它允许您在接口本身上定义实际的方法实现,这意味着接口现在可以实现。既然如此,C#类可以实现/继承多个接口那么为什么我会在世界上使用抽象类?

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

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

2 个答案:

答案 0 :(得分:1)

通常,类继承感觉像分类法(x'是' y),而接口是行为(x'可以做' y),所以暗示有一个微妙的差异含义。虽然你是对的,但技术上的区别并不那么明确。

答案 1 :(得分:1)

除了评论中提到的州外,

<强> Base Class

您无法从Base类继承接口。接口只能继承接口。您需要抽象类来从其他类派生。既然你不能从类中继承,那么你就无法覆盖类方法。您可以在抽象类中覆盖它。