C#中virtual与abstract的区别

 C# virtua 关键字用于修改方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。 例如,此方法可被任何继承它的类替代。

   不能将C# virtual修饰符与以下修饰符一起使用:static   abstract   override 

   C#的virtual 和 abstract经常让人混淆,这两个限定词都是为了让子类进行重新定义,覆盖父类的定义。用法上区别如下:

  1. virtual修饰的方法必须有方法实现(哪怕只有一对大括号),abstract修饰的方法不能有实现。
  2. virtual可以被子类重写,abstract必须被子类重写
  3. 如果类中的某一函数被abstact修饰,则类名也必须用abstact修饰
  4. 用abstract修饰的类只能被继承不能够被实例化
  5. C#中如果准备在子类重写父类的方法,则该方法在父类中必须用virtual修饰,在子类中必须用overide修饰,避免了程序员在子类中不小心重写了父类父类方法。
原文地址:https://www.cnblogs.com/weilei/p/11497427.html