Translate Into English Coffee & Tea
ASP.NET 中的 AJAX ASP.NET 画图全接触 ASP.NET 与 XML 声明式数据绑定 ASP.NET 网页抓取
C# 基础 C# 类教程 C# 加密 ASP.NET 成员资格 非“自动化”处理 Excel
QuickAjax Ajax 完美的语法高亮器 Silverlight Popfly
C# 类教程-继承:重写(virtual 与 override)
免费注册联想 5G 网盘
  • virtual 用在基类中,指定一个虚方法(属性),表示这个方法(属性)可以重写。
  • override 用在派生类中,表示对基类虚方法(属性)的重写。

以上的基类和派生类都是相对的。B 是 C 的基类,也可以是 A 的派生类,B 中既可以对 A 中的 virtual 虚方法用 override 重写,也可以指定 virtual 虚方法供 C 重写。

  • 不能重写非虚方法或静态方法。重写的基方法必须是 virtual、abstract 或 override 的。为什么 override 也可以重写呢?因为基类中的 override 实际上是对基类的基类进行的重写,由于继承可传递,所以也可以对基类中 override 的方法进行重写。
  • override 声明不能更改 virtual 方法的可访问性。override 方法和 virtual 方法必须具有相同的访问级别修饰符。
  • 不能使用修饰符 new、static、virtual 或 abstract 来修改 override 方法。
  • 重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称,并且被重写的属性必须是 virtual、abstract 或 override 的。
public class BaseClass
{
    public virtual string GetString()
    {
        return "这是一个虚方法。";
    }
}


public class DerivedClass : BaseClass
{
    public override string GetString()
    {
        return "这是重写了的方法。";
    }
}

可以看出,重写与前面讲的重载是有区别的,其区别将在下一节中一并列出。

文章评论
标题:必填
内容:
文章信息