Abstract抽象类 跟 Interface 接口的 区别和联系

Abstract抽象类 和 Interface 接口的 区别和联系

 

  • 接口可以包含事件、属性、索引器、静态方法、静态字段、静态构造函数以及常数,可以实现多个接口,当一个类继承某个接口时,它不仅要实现该接口定义的所有方法,还要实现该接口从其他接口中继承的所有方法。
  • 抽象类不能实例化,必须通过继承由派生类实现其抽象方法,因此对抽象类不能使用new关键字,也不能被密封。如果派生类没有实现所有的抽象方法,则该派生类也必须声明为抽象类。另外,实现抽象方法由override方法来实现。
  • 接口不可以定义字段,抽象类可以定义字段;
  • 接口的成员不可用private或public修饰,因为都是public的,抽象类可以是private也可以是public的。
  • 接口的方法只能有子类来实现;抽象类可以有实现的方法。
  • 相同点是:两个都不能实例化。