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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王伟 黑马帝   /  2011-11-27 14:19  /  2498 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王伟 于 2011-11-27 20:37 编辑

override是什么,override和(重载)overload的区别

评分

参与人数 1技术分 +1 收起 理由
李荣壮 + 1

查看全部评分

3 个回复

倒序浏览
覆写(Override)的两个函数的函数特征相同,重载(Overload)的两个函数的函数名虽然相同,但函数特征不同。
Override 是在继承的时候,如果你写的函数与要继承的函数函数特征相同,那么,加上这个关键字,在使用这个子类的这个函数的时候就看不见父类(或超类)的函数了,它被覆盖掉了。
Overload 是重载,就是说函数名相同,函数特征不同,系统会根据你提供的参数来调相应的函数。

评分

参与人数 1技术分 +1 收起 理由
李荣壮 + 1

查看全部评分

回复 使用道具 举报
重载(overload):同一个作用域内发生(比如一个类里面),定义一系列同名方法,但是方法的参数列表不同。这样才能通过传递不同的参数来决定到底调用哪一个。而返回值类型不同是不能构成重载的。

重写(override):继承时发生,在子类中重新定义父类中的方法,子类中的方法和父类的方法是一样的
        例如:基类方法声明为virtual(虚方法),派生类中使用override申明此方法的重写.

重载时,根据参数选择调用的方法;
重写时,访问父类子类皆调用子类的重写方法;


回复 使用道具 举报
本帖最后由 刘景发 于 2011-11-27 18:05 编辑

verride修饰符是覆写的意思,作用覆写一个基类中的方法。
而重载则是将将同名方法重新写过,达到同名的函数实现不同的功能.从而实现了一个方法有不同的版本.
override与重载的区别可以总结为:
overload(重载):特点(两必须,一可以)
  方法名必须相同,参数列表必须不同,返回值类型可以不同.
比如说:在构造函数中,由于条件限制有的构造函数需要参数有的不需要,这是用重载最合适了.

override(覆写):特点(三相同)
  相同的方法名,相同的参数列表,相同的返回值类型.通过使用override关键字来实现覆写.
类可以重新定义父类的同名虚函数的执行体
派生类中的方法是重写了基类的方法
运行时采用动态绑定的方法
根据对象的类型确定使用的方法

用如下代码表示下两者的区别:
overload在同一个类中具有相同方法(函数)名的不同签名的实现,也就是说方法的名字相同,但参数类型,个数都不相同的(不包括返回类型),如下就是重载
public double GetValue()
{
}
public int GetValue(string s)
{
}

override是在子类中实现父类中的virtual方法(属性也可),或者是abstract方法(属性也可以),如下:
public class A
{
   public virtual void SetValue(string str)
  {
  }
}
public class B:A
{
   string mumber;
   public override void SetValue(string str)
   {
     number = str;  
   }
}

评分

参与人数 1技术分 +1 收起 理由
李荣壮 + 1

查看全部评分

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