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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沈可 中级黑马   /  2014-1-15 10:00  /  1381 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 沈可 于 2014-1-15 14:49 编辑

override与重载的区别?

评分

参与人数 1技术分 +1 收起 理由
卖火柴 + 1

查看全部评分

6 个回复

倒序浏览
override修饰符,覆写一个基类中的方法...重载则是将将同名方法重新写过,达到同名的函数实现不同的功能.从而实现了一个方法有不同的版本.override与重载的本质区别是,加入了override的修饰符的方法,此方法始终只有一个被你使用的方法..这个区别就好像:
  override就好像
  你叫张三,你爸爸给修改了名字为李四...
  重载就好像
  你叫张三,但是别人也可以叫张三..

评分

参与人数 1技术分 +1 收起 理由
卖火柴 + 1

查看全部评分

回复 使用道具 举报
override 是子类重新实现父类中的方法,能够被override的方法必须是virtual或者abstract的方法,是子类和父类之间的关系,调用的时候是调用的具体对象中的方法,如果子类没有重写就调用的父类的(默认继承嘛),重写了就是调用子类自己的方法

重载是在同一个类之间,同一个方法名,但是方法的签名中的参数类型,或者参数个数,或者参数的排列顺序,不同而重新实现的一个方法,比如控制台中常用的重载:Console.WriteLine(),按一下F12,可以看到这个方法中的参数类型和个数不一样,故可以输出很多类型不同的值,调用的时候是需要根据函数的签名去调用相应的方法

评分

参与人数 1技术分 +1 收起 理由
卖火柴 + 1

查看全部评分

回复 使用道具 举报
答 :重载:同类同名不同参,属于编译时多态。重载是在一个类中定义多个方法名相同的方法,表示一个行为有多种实现方式
重写:同名同参不同类,属于运行时多态。重写是用子类的方法来重写父类的方法,表示相同的方法在父类和子类中具有差异性

这是面试宝典中的回答

评分

参与人数 1技术分 +1 收起 理由
卖火柴 + 1

查看全部评分

回复 使用道具 举报
重载是方法名相同.参数的顺序个数或参数类型不同,多次重载以适应不同的需求,重载是面向过程的。
override是进行基类中函数的重写,是面向对象的概念
在子类的方法中,访问修饰符后面加new能解决(显示隐藏父类方法).在父类方法上加virtual,然后在子类继承父类时,用override重写父类方法虚方法不能用static修饰 2.方法重写与基类的签名必须一致 3.virtual不能与private一起使用!

评分

参与人数 1技术分 +1 收起 理由
卖火柴 + 1

查看全部评分

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

评分

参与人数 1技术分 +1 收起 理由
卖火柴 + 1

查看全部评分

回复 使用道具 举报
重载 : 方法的名称相同,参数或参数类型不同,进行多次重载以适应不同的需要 .
Override : 进行基类中函数的重写,为了适应需要。

评分

参与人数 1技术分 +1 收起 理由
卖火柴 + 1

查看全部评分

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