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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 陈东 于 2012-3-11 11:19 编辑

我知道C#中方法的重载是在一个类中定义多个方法名相同、方法间参数个数和参数顺序不同的方法就是方法的重载,那什么是方法的重写啊?跟重载有什么关系吗?

评分

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

查看全部评分

4 个回复

正序浏览
方法重载跟方法重写没有什么关系
方法的重写只能用于父类与子类
方法的重写只需要方法名相同,其他的像,返回值,参数,方法体都可以不同
方法的重写父类方法要用virtual 关键字修饰(虚拟方法),子类要用override关键字修饰

评分

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

查看全部评分

回复 使用道具 举报
1.
父类:public virtual string ToString(){return "a";}
子类:public override string ToString(){return "b";}
2.
同一类中或父子关系类中皆可:
public string ToString(){return "a";}
public string ToString(int id){return id.ToString();}

override是用于重写基类的虚方法,这样在派生类中提供一个新的方法

重载是提供了一种机制, 相同函数名通过不同的返回值类型以及参数来表来区分的机制


1. override
-----------
使用 override 修饰符来修改方法、属性、索引器或事件。重写方法提供从基类继承的成员的新实现。由重写声明重写的方法称为重写基方法。重写基方法必须与重写方法具有相同的签名。

不能重写非虚方法或静态方法。重写基方法必须是虚拟的、抽象的或重写的。

也就是说,用 override 修饰符重写的基类中的方法必须是 virtual, abstract 或 override 方法。



2. 重载
-------
当类包含两个名称相同但签名不同的方法时发生方法重载。

使用重载方法的指南:
a. 用方法重载来提供在语义上完成相同功能的不同方法。
b. 使用方法重载而不是允许默认参数。默认参数的版本控制性能不好,因此公共语言规范(CLS)中不允许使用默认参数。
c. 正确使用默认值。在一个重载方法系列中,复杂方法应当使用参数名来指示从简单方法中假定的默认状态发生的更改。
d. 对方法参数使用一致的排序和命名模式。提供一组重载方法,这组重载方法带有递增数目的参数,以使开发人员可以指定想要的级别的信息,这种情况很常见。您指定的参数越多,开发人员就可指定得越详细。
e. 如果必须提供重写方法的能力,请仅使最完整的重载是虚拟的并根据它来定义其他操作。
// 下面具体解释一下这种模式,只有最后一个方法(参数最完整的方法)是虚方法,在继承了这个类的子类中只要重写(override)这个方法就行了。

public class SampleClass
{
   private string myString;

   public SampleClass(string str)
   {
      this.myString = str;
   }

   public int IndexOf(string s)
   {
      return IndexOf (s, 0);
   }

   public int IndexOf(string s, int startIndex)
   {
      return IndexOf(s, startIndex, myString.Length - startIndex );
   }

   public virtual int IndexOf(string s, int startIndex, int count)
   {
      return myString.IndexOf(s, startIndex, count);
   }
}
以前收集的资料,希望对你有帮助

评分

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

查看全部评分

回复 使用道具 举报
你可以这样理解,假如有一个person类,类中有一个方法,又有一个chinese类继承person类,这时就可以在chinese中修改person类中的那个方法,但是参数要跟原来的方法一样!重写,顾名思义就是重写嘛,重载你懂的!

评分

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

查看全部评分

回复 使用道具 举报
重写一般是子类集成父类时 对父类方法的修改 参数要相等哦!

评分

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

查看全部评分

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