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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄星星 初级黑马   /  2013-3-16 09:51  /  2001 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

override与重载的区别

2 个回复

倒序浏览
其实很本质的区别就是看函数特征:
覆写(Override)的两个函数的函数特征相同
重载(Overload)的两个函数的函数名虽然相同,但函数特征不同。
函数特征包括函数名,参数的类型和个数。

Override 是在继承的时候,如果你写的函数与要继承的函数函数特征相同,那么,加上这个关键字,在使用这个子类的这个函数的时候就看不见父类(或超类)的函数了,它被覆盖掉了。
比如:Derived继承了Base,Base里面有void A(int a)
那么如果你Derived里面觉得A写得不好或不适合这个类,你想重新再写一遍A里的代码,那么就写override void A(int a)这样,原来的那个函数就被你新写的这个覆盖掉了。
Overload 是重载,就是说函数名相同,函数特征不同,系统会根据你提供的参数来调相应的函数。
比如:void A(int a)和void A(int a,int b)
如果你用的是A(1)那么调的是第一个,如果是A(1,1)那么调的是第二个。
回复 使用道具 举报
覆写(Override) 子类覆写父类的方法,要求方法名和返回值,参数必须一致。
重载(Overload  一个方法名,可以有不同的参数类型,也就是不同的方法了,虚拟机会根据你的参数类型自动调用符合类型的方法,。他要求方法名必须相同,参数不同,并且返回值没要求相同。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马