virtual方法:
如果在父类中使用了virtual关键字,而在其派生类中有没有override或new关键字,而直接引用一个同名方法的话,编译器将会报告错误,并将使用new方法,及以忽略派生类中的方法的方式来运行。
为了是派生类的实例完全代替来自基类的类成员,基类必须将该成员声明为虚拟的。这是通过在该成员的返回类型之前添加virtual关键字来实现的。
使用virtual需注意:
- virtual修饰符不能与static、abstract、private或override修饰符一起使用。
- 在静态属性上的使用virtual修饰符是错误的。
- 通过使用override修饰符的属性声明,可在派生类中重写virtual继承属性。
override方法:
override方法是提从基类继承的成员的新实现。通过override声明重写的方法称为重写方法。重写方法必须是virtual、abstract或override的。
如果在派生类中的方法前使用带有override的关键字,则派生类的对象将调用该方法,而不调用基类中的方法。
使用override需注意:
- override生命不能更改virtual方法的可访问性。
- override方法和virtual方法必须具有相同的访问级别修饰符。
- 不能使用修饰符new、static、virtual或abstract来修饰override方法。
- 重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称,并且被重写的属性必须是virtual、abstract或override的。