接口

将一个对象看成多个类型的能力成为多继承(multiple inheritance)。CLR支持单实现继承和多接口继承。
接口仅是包含着一组虚方法的抽象类型,其方法包括名称、参数、和返回值类型,不能包括任何实现。
接口中也可以定义时间、无参属性以及含参属性(索引器),还允许包含静态方法、静态字段、常数、以及静态构造器,Csharp编译器阻止我们在一个接口中定义任何静态成员,另外CLR也不允许接口中包含任何的实例字段或实例构造器。

接口的非静态方法总被认为时共有的虚方法。在Csharp中,如果一个实现类型实现接口方法时省略了virtual关键字,那么该方法将被认是一个密封(sealed)的虚方法。
一个接口不能继承其他类型的实现,但是可以继承其他接口。

和引用类型相似,值类型也可以实现0个或多个接口,但是当我们将一个值类型实例转型为一个接口类型时,该值类型将被装箱。

基类型和接口类型的选择:
IS-A与CAN-DO关系: IS-A基类型,CAN-DO接口类型
易用性   :基类型使用方便,接口类型必须实现
一致的实现:
版本
原文地址:https://www.cnblogs.com/songshuqun/p/748159.html