C#接口和抽象类的区别 - chunlieater/chunlifeet GitHub Wiki

接口并不是类,而是方法,属性,事件等等的集合,在C#中,一个类可以继承多个接口,但只能继承一个类。

接口默认就是public,连同它的内部成员都不能用修饰符修饰,接口的成员不可以定义。接口不能实例化。

抽象类的成员是可以定义的,但也不能实例化。

接口支持接口回调,抽象类不支持,因为抽象类不能实例化。接口回调和类的多态看似相同,其实不同。

接口回调的意思就是,建立一个接口对象,让它等于一个实现该接口的类的实例的引用,那么这个接口的对象就可以直接调用该类实现的方法,效果类似与多态,但是要灵活一些。

实现接口函数的时候不能加override,而实现抽象函数时需要加override,另外重写虚函数也需要加override。