c# - 接口(interface)与抽象类

标签 c# inheritance interface abstract-class

<分区>

在C#中,什么时候应该使用接口(interface),什么时候应该使用抽象类?决定因素是什么?

最佳答案

更新:C# 8.0 新功能: 从 C# 8.0 开始,接口(interface)可以定义成员的默认实现,包括属性。很少为接口(interface)中的属性定义默认实现,因为接口(interface)可能不定义实例数据字段。

抽象类的优点是:

  • 能够指定方法的默认实现
  • 向函数添加不变检查
  • 对如何调用“接口(interface)”方法有更多的控制
  • 能够“免费”提供与界面相关或无关的行为

接口(interface)仅仅是数据传递契约,没有这些特性。但是,它们通常更灵活,因为一种类型只能从一个类派生,但可以实现任意数量的接口(interface)。

关于c# - 接口(interface)与抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/747517/

相关文章:

Java继承与线程混淆

java - 存储接口(interface)实现和检索特定实现的良好模式是什么?

c# - 线程同步

c# - 当我更改继承类中同名方法的代码时,我不需要使用属性覆盖和虚拟。这是为什么?

C++:继承问题

c# - 具有更严格约束的继承方法?

java - 安卓自定义事件

c# - 编程P2P应用程序

c# - Web 应用程序的三种不同类型的用户

c# - 当 xamarin 表单中的条目为空时,有没有办法在按下删除时触发事件