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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 伱涐的距离 中级黑马   /  2013-12-27 10:50  /  1490 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 伱涐的距离 于 2013-12-27 15:23 编辑

大侠们override与重载的区别是什么呢?

评分

参与人数 1技术分 +1 收起 理由
陈福军 + 1

查看全部评分

6 个回复

倒序浏览
1. 重载是方法的名称相同,参数或者参数类型不同,进行多次重载来适应不同的需要;
2. 重载(overload)是面向过程的概念;
3. Override是进行基类中函数的重写;
4. Override是面向对象的概念。

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
Override用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数
回复 使用道具 举报
override 是子类重写父类的虚方法或抽象父类的抽象方法,其方法名和方法参数和方法返还值必须相同,但是方法内容继承于一个父类的不同子类应该不一样,是多态的一种表现形式,而重载是在一个类当中函数名相同,但参数类型不同或个数不同或顺序不同是对于一个方法的不同实现

评分

参与人数 1技术分 +1 收起 理由
陈福军 + 1

查看全部评分

回复 使用道具 举报
两者都可以用来实现多态性。
但 override 必须是在基类中使用 virtual 定义虚方法,然后使用 override 定义与虚方法相同名称和签名新方法用以覆盖基类中的虚方法,只要在派生类中有继承过来的虚方法,都可以只要做。如果你不清楚,虚方法覆盖如何使用,那么就需要多看些之类内容,因为其内在的机制还是比较复杂的。
重载可以在同一个类中进行,也可以在派生类中定义。其与覆盖最大的不同是在重载时定义相同的方法名称但不相同的方法签名(返回值在这不作为签名的一部分),并在编译时根据方法签名的不同确定使用何种方法。

评分

参与人数 1技术分 +1 收起 理由
陈福军 + 1

查看全部评分

回复 使用道具 举报
重载,函数名相同,但参数类型或个数或顺序不同。其用途比如:可读性强;在构造器的时候根据参数初始化你想要的实例;代码维护性高,重载的方法,处理逻辑的代码通常都在一个方法里,其他方法通常调用偏多
override,是重写,字面意思,就是重写某个方法的业务逻辑。最大用途是多态,其实重载也是一种多态,但二种多态有个差别是,重载是编译时多态,override是运行时多态

评分

参与人数 1技术分 +1 收起 理由
陈福军 + 1

查看全部评分

回复 使用道具 举报
名称相同参数列表不同的一组方法互相之间构成重载,各方法内的计算逻辑基本相似,只是方便不同类型的参数来调用。互相之间没有覆盖,是并列关系,调用谁是根据实参类型来匹配的。吃中餐吃西餐就是吃方法的重载。
overide是子类覆盖了父类的方法,是重写,方法名称及参数列表都跟父类方法是一样的,可以理解为干掉了父类的方法,新人换旧人。自从有了火以后,吃(){熟食} 基本就重写了原始社会 吃(){生食} 的方法。

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马