•virtual 用在基类中,指定一个虚方法(属性),表示这个方法(属性)可以重写。
•override 用在派生类中,表示对基类虚方法(属性)的重写。
•不能重写非虚方法或静态方法。重写的基方法必须是 virtual、abstract 或 override 的
•override 声明不能更改 virtual 方法的可访问性。override 方法和 virtual 方法必须具有相同的访问级别修饰符
•注意和new的差异
new(隐藏继承)
用于子类中,可修饰父类中有或无virtual声明的方法;
如果在父类中有与父类同名同参的方法时,C#会隐式在子类前添加一个new关键字。
用于子类中,可修饰父类中有或无virtual声明的方法;
如果在父类中有与父类同名同参的方法时,C#会隐式在子类前添加一个new关键字。
•抽象类用来列举一个类所需要的行为
•抽象类不明确提供具体实现方法
•抽象类必须由其子类实现它的抽象方法(除非子类也具有抽象性)
•抽象类不能实例化
•抽象类不能是密封(sealed)或静态的

•抽象类的实现在子类中重写
