问题是这样的:Override以后为啥还要调用父方法(base)?protected override void OnLoad(EventArgs args) 

if(this.Text == null) 
{ this.Text = Session["SomeSessionKey"] as string; 

base.OnLoad(args);
}
是不是每个override都必须base呢?
如果不是的话,什么情况下在override以后需要base父方法呢?我刚学,经验少,请指教。谢谢。

解决方案 »

  1.   

    这个方法毕竟没有将base的onload操作全部覆盖,只是加了部分功能,当然需要召唤一下base啊
      

  2.   

    override 是重载的知识,建议你去看重载的相关知识
      

  3.   

    override 方法提供从基类继承的成员的新实现。 由 override 声明重写的方法称为重写基方法。
    不能重写非虚方法或静态方法。 重写的基方法必须是 virtual、abstract 或 override 的。 override 声明不能更改 virtual 方法的可访问性。 override 方法和 virtual 方法必须具有相同的访问级别修饰符。 您不能使用 new、static 或 virtual 修饰符来修改 override 方法。 重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称,并且被重写的属性必须是 virtual、abstract 或 override 的。 
      

  4.   

    http://msdn.microsoft.com/zh-cn/library/ebca9ah3.aspx
      

  5.   

    base 是调用父类的方法,
    从框架上说;.netFramework自己的内部封转了好多得方法。画图,文件读写等;
    这些方法有的实现有的只是个虚方法;开发人员要实现功能必须调用这些方法,而我们有可能只用这个类中的一两个方法;其他没用到的可能是用到方法的初始或支持。因此必须调用父类的实现。来初始或来写方法;
      

  6.   

    你说主要内容是怎么重写方法啊。可是我问的问题不是这个呀。我问的是:是不是每个override后必须得base被重写的方法呢?为什么呢??
      

  7.   

    是啊!base.OnLoad(args);我知道base是调用父类的方法。可是这里有一点我想不明白:既然子类重写了这个方法,为什么还要base父类方法呢? 
    还有个例子,比如 override了Page_Onload(...)以后,又base.Page_Onload(...),这个怎么理解呀??
      

  8.   

    override是方法出重写。父类中固定死了某个方法的实现,你在子类也可以用overri重写这个方法。具体写什么,自己可以定义。到这里你应该比较下这几个概念:多态、虚方法、重写
      

  9.   

    多谢!我在这里找到了答案!http://msdn.microsoft.com/zh-cn/library/hfw7t1ce(VS.80).aspx