C#中virtual与abstract的区别
C# virtua
关键字用于修改方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。 例如,此方法可被任何继承它的类替代。
不能将C# virtual修饰符与以下修饰符一起使用:static abstract override
C#的virtual 和 abstract经常让人混淆,这两个限定词都是为了让子类进行重新定义,覆盖父类的定义。用法上区别如下:
- virtual修饰的方法必须有方法实现(哪怕只有一对大括号),abstract修饰的方法不能有实现。
- virtual可以被子类重写,abstract必须被子类重写
- 如果类中的某一函数被abstact修饰,则类名也必须用abstact修饰
- 用abstract修饰的类只能被继承不能够被实例化。
- C#中如果准备在子类重写父类的方法,则该方法在父类中必须用virtual修饰,在子类中必须用overide修饰,避免了程序员在子类中不小心重写了父类父类方法。