先看MSDN的解释:
abstract
abstract 修饰符可以和类、方法、属性、索引器及事件一起使用。在类声明中使用 abstract 修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。virtual
virtual 关键字用于修饰方法、属性、索引器或事件声明,并且允许在派生类中重写这些对象。override
要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用 override 修饰符。new
在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。隐藏继承的成员意味着该成员的派生版本将替换基类版本。在不使用 new 修饰符的情况下隐藏成员是允许的,但会生成警告。使用 new 显式隐藏成员会取消此警告,并记录代之以派生版本这一事实。
abstract就是指基类没有实现, 只有占位或者签名,若要使用必须在子类中实现
virtual就是基类中已经有实现版本,在子类中可以选择覆盖或者直接继承使用
override重写基类时,基类的相关成员依然存在、可访问
new 重写基类时,基类的原始成员被隐藏,变为不可访问