new、virtual、override、abstract 等-覆盖(改写、重写)

作者:vkvi 来源:千一网络(原创) 日期:2009-12-12

覆盖最主要的特点是关键字 virtual、override。

public class BaseClass
{
    public virtual void Do()
    {
        HttpContext.Current.Response.Write("基类方法");
    }
}
 
public class DerivedClass : BaseClass
{
    public override void Do()
    {
        HttpContext.Current.Response.Write("派生类方法");
    }
}

调用:

DerivedClass dc = new DerivedClass();
dc.Do(); // 派生类方法
((BaseClass)dc).Do(); // 派生类方法

调用的都是派生类方法。

覆盖特点:

  • 必须位于基类和派生类中;
  • 方法名称必须相同;
  • 参数类型、参数个数必须相同;
  • 返回值类型必须相同(与隐藏不同);
  • 必须使用关键字 virtual 和 override;
  • 即使把派生类的实例转换成基类类型,也无法调用基类中被覆盖的方法,因为它已经被覆盖了嘛,不像隐藏还有被“发掘”的机会。

相关阅读

相关文章
文章评论