抽象类与接口的异同
abstract
抽象关键字,一般用于抽象类,抽象方法,抽象对象。为了等价比较,下文用于表示抽象类,即abstract class
。抽象类在代码实现方面发挥作用。
interface
接口关键字。一组协议或规则的声明,需要继承的对象具体实现。接口在系统架构设计方面发挥作用,定义某种契约。
主要区别
抽象类也是类,而接口是接口。
抽象类单继承,接口多继承。
抽象类中的成员(对象,方法等)需要实现。接口不可以实现。(C#8.0后好像运行)
抽象类成员可以是public
,private
,protect
,internal
。抽象成员只能为public
。
接口成员只能为public
,且默认不写。(C#8.0后允许)