微软官方文档:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/abstract-and-sealed-classes-and-class-members
抽象类和类成员
通过在类定义前面放置关键字 abstract
,可以将类声明为抽象类。 例如:
public abstract class A { // Class members here. }
抽象类不能实例化。 抽象类的用途是提供一个可供多个派生类共享的通用基类定义。 例如,类库可以定义一个抽象类,将其用作多个类库函数的参数,并要求使用该库的程序员通过创建派生类来提供自己的类实现。
抽象类也可以定义抽象方法。 方法是将关键字 abstract
添加到方法的返回类型的前面。 例如:
public abstract class A { public abstract void DoWork(int i); }
抽象方法没有实现,没有方法体。 抽象类的派生类必须实现所有抽象方法。 当抽象类从基类继承虚方法时,抽象类可以使用抽象方法重写该虚方法。抽象方法只能在抽象类中定义
虚方法
虚函数是该方法有方法体,但是子类可以覆盖,也可不覆盖。
virtual修饰符不能与private、static、abstract、override修饰符同时使用。
override修饰符不能与new 、static、virtual修饰符同时使用,并且重写方法只能用于重写基类中的虚方法。