C#之修饰符-----virtual和override

来源:互联网 发布:阿里云ecs连接ftp 编辑:程序博客网 时间:2024/04/29 23:06
virtual(C# 参考)

 

virtual 关键字用于修饰方法、属性、索引器或事件声明,并且允许在派生类中重写这些对象。例如,此方法可被任何继承它的类重写。

复制代码
public virtual double Area() {    return x * y;}

虚拟成员的实现可由派生类中的重写成员更改。有关使用 virtual 关键字的更多信息,请参见使用 Override 和 New 关键字进行版本控制(C# 编程指南) 和了解何时使用 Override 和 New 关键字(C# 编程指南)。

调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员。

默认情况下,方法是非虚拟的。不能重写非虚方法。

virtual 修饰符不能与 staticabstract, privateoverride 修饰符一起使用。

除了声明和调用语法不同外,虚拟属性的行为与抽象方法一样。

  • 在静态属性上使用 virtual 修饰符是错误的。

  • 通过包括使用 override 修饰符的属性声明,可在派生类中重写虚拟继承属性。

 
override(C# 参考)

 

要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用 override 修饰符。

在此例中,类 Square 必须提供 Area 的重写实现,因为 Area 是从抽象的 ShapesClass 继承而来的。

复制代码
abstract class ShapesClass{    abstract public int Area();}class Square : ShapesClass{    int x, y;    // Because ShapesClass.Area is abstract, failing to override    // the Area method would result in a compilation error.    public override int Area()    {        return x * y;    }}

有关 override 关键字用法的更多信息,请参见使用 Override 和 New 关键字进行版本控制以及了解何时使用 Override 和 New 关键字。

override 方法提供从基类继承的成员的新实现。通过 override 声明重写的方法称为重写基方法。重写的基方法必须与 override 方法具有相同的签名。有关继承的信息,请参见继承。

不能重写非虚方法或静态方法。重写的基方法必须是 virtualabstractoverride 的。

override 声明不能更改 virtual 方法的可访问性。override 方法和 virtual 方法必须具有相同的访问级别修饰符。

不能使用修饰符 newstaticvirtualabstract 来修改 override 方法。

重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称,并且被重写的属性必须是 virtualabstractoverride 的。

原创粉丝点击