标签 abstract class 下的文章

C#中接口(interface)和抽象类(abstract class)的区别

对面型对象理解总觉得不够深入,这里记录一下:

接口(interface)

  • 接口是无状态的
  • 接口一般只有成员方法,一般无成员变量,属性,虽然也可以有,但基本上不这样做
  • 接口中不能包含实现代码,子类中必须对接口方法进行实现
  • 接口可以被多个类继承实现

抽象类(abstract class)

  • 抽象类是可以有状态的
  • 抽象类除了可以有抽象方法外,还可以有成员变量、属性,也可以有非抽象方法
  • 抽象类中可以有自己的非抽象接口实现,子类可以复用
  • 抽象类不能被多继承,一个类只能继承一个父类
  • 抽象类中的抽象方法在子类中也可以是抽象的,直到最后有个子类的实现即可

参考

stackoverflow