A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在ASP.NET生命周期这一季的视频中,通过反编译,发现源码中有这么一段
  1. protected override void FrameworkInitialize(){
  2.     base.FrameworkInitialize();
  3.     this.__BuildControTree(this);
  4.     base.AddWrappedFileDependencise(__fileDependencies);
  5.    base.request.ValidateInput();
  6. }
复制代码
其中这句代码
  1. base.FrameworkInitialize();
复制代码
子类重写了父类的方法,那么再调用父类的方法,其实调用的是子类的方法
那在子类重写的方法中,调用父类被重写的方法,不就是调用自己吗?
那不就调来调去出不来了?
{:soso_e135:}

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

4 个回复

倒序浏览
子类重写方法是在基类有此方法重写,那么声名一个子类的对象,调用的方法是子类的方法,
通过base转而调用父类中的方法,最终目的还是调用父类中的方法。
还有重写方法可以改变基类方法的作用,可以实现其他的效果,重写方法,和基类同名方法是两个不同实现的方法,
最主要你要分清楚  重写跟基类中的方法不一定实现同样的效果,还有基类也不一定知道派生类中是否重写了这个方法

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
彭书雄 发表于 2012-9-28 21:06
子类重写方法是在基类有此方法重写,那么声名一个子类的对象,调用的方法是子类的方法,
通过base转而调用 ...

也就是说,子类重写了父类的方法,然后在子类重写的这个方法中通过base调用父类的方法,最终就等于执行了两个方法
1.执行了父类中被重写的方法
2.执行了该行代码后面的内容(比如base.FrameworkInitialize();代码后的代码)

是这样理解吗?
回复 使用道具 举报
李阳_TickTock 发表于 2012-9-28 22:38
也就是说,子类重写了父类的方法,然后在子类重写的这个方法中通过base调用父类的方法,最终就等于执行了 ...

类中的方法 在本类中没有重写方法 而是子类中才能够对父类的方法进行重写, 需要重写的方法在子类中间加上override 进行方法内部重构,从而子类方法成为一个新的方法,只是方法名字相同而已,base.FrameworkInitialize() 只是在父类中对framework框架的初始化的方法, 类似声明变量,对变量初始化一个道理, 跟一般子类初始化对象一样,初始化的顺序是 先初始化父类构造函数 ,再是子类构造函数 ,接着父类变量,最后子类变量,
回复 使用道具 举报
哥们,拿到入学名额了吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马