在C#的第8个版本中,新增了一个选项。那么,抽象类和接口之间的区别是什么,为什么我还要使用抽象类呢?这个版本中这种变化的优势是什么?
在C#的第8个版本中,新增了一个选项。那么,抽象类和接口之间的区别是什么,为什么我还要使用抽象类呢?这个版本中这种变化的优势是什么?
接口的基本特征仍然是它们不能包含字段。如果您需要数据,您需要一个基类。如果不需要数据,那么使用接口可能就足够了。
C# 8.0引入了一个新功能,叫做接口中的默认实现,这改变了很多事情。
接口现在可以有方法的默认实现。 接口现在可以有私有成员。 接口现在可以有静态成员,用于默认实现的参数化。 接口现在可以有受保护的成员,派生类无法访问,但可以通过派生接口访问。 如果一个类想要实现受保护的成员,则必须通过显式地实现接口来完成。 接口也可以有虚拟成员,但是类不能重写该方法,但是接口可以。
我们可以认为现在接口和抽象类有些相似了,但是接口不能有实例状态、实例字段、实例自动属性,不能定义类级字段或变量,而抽象类可以有状态。
这个更改有一些原因:扩展API、与Android、iOS的互操作性以及支持特征语言功能。
一个类可以实现多个接口,但只能继承一个抽象类。 接口不能有构造函数和析构函数,但抽象类可以。