C#抽象类、抽象方法、虚方法

定义抽象类和抽象方法:

  abstract

抽象类特点:

  1、不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们的实例

  2、一个抽象类可以包含抽象和非抽象方法,当一个类继承于抽象类,那么这个派生类必须实现所有的的基类抽象方法

  3、通过声明派生类也为抽象,我们可以避免所有或特定的虚方法的实现,这就是抽象类的部分实现

  4、一个抽象类能够继承另一个非抽象类,另外,继承了基类的方法,添加新的抽象和非抽象方法是可行的

  5、一个抽象类也能从一个接口来实现,这种情况,我们必须为所有的方法提供方法体,这些方法是来自接口

  6、一个抽象类必须为所有的接口成员提供实现,一个用于实现接口的抽象类可能把接口方法安排到抽象方法上

抽象方法特点:

  1、abstract关键字只能用在抽象类中修饰方法,并且没有具体的实现。抽象方法的实现必须在派生类中使用override关键字来实现

  2、一个抽象方法可以看作是一个虚函数,抽象方法的声明只能在抽象类中

  3、抽象方法声明只提供一个无实现的方式,没有方法体

  4、方法体的实现被覆写方法提供,覆写方法是一个非抽象类的成员

  5、抽象属性的行为和抽象方法相像,除了不同的声明形式

  6、在一个静态属性中使用abstract 是一个错误

  7、一个抽象属性能够通过派生类使用 override 实现

Virtual 用于定义虚方法:

  virtual 关键字用于在基类中修饰方法。virtual的使用会有两种情况

  1、在基类中定义了virtual方法,但在派生类中没有重写该虚方法。那么在对派生类实例的调用中,该虚方法使用的是基类定义的方法

  2、在基类中定义了virtual方法,然后在派生类中使用override重写该方法。那么在对派生类实例的调用中,该虚方法使用的是派生重写的方法