一、拖拉机理念:
方法重载是指在同一个类中方法同名,参数不同,调用时根据实参的形式,选择与他匹配的方法执行操作的一种技术。今天我将以拖拉机和我家的关系向大家介绍我对重载的理解。
过年了,妈咪给了我压岁钱,不多不少,正好500块钱的一半,我琢磨着这钱不能瞎花,得为家里干点事吧,于是,我买了一辆拖拉机。(在“家方法”中添加了一种“拖拉机载物方法”)
第一次,我的拖拉机是空哒;
第二次,我用拖拉机向家里运的是玉米;
那么问题来了,第二次用拖拉机装载的是玉米,难道我的拖拉机以后只能装载玉米了吗?当然不是,要真是那样,以后如果我家不种玉米了,拖拉机不就相当于白买
了吗!可是如果我用这个拖拉机装沙子,沙子就漏掉了啊,怎么办?
这时候重载出现了,将“拖拉机载物方法”重载,把里面的装备改了,将我的拖拉机改成既能装玉米,又能装沙子,平时还可以什么都不装的在家里待着的拖拉机。看看我的代码:
class Home { private string goods = ""; //类型一,专门适用于货物类 public Home(string goods) { this.goods = goods; } private int num ; //类型二,专门适用于数字 public Home(int num) { this.num = num; } public Home() //重载 //类型三,专门适用于空载 { this.goods = "空哒"; } public string Zhuangzai() { return "我的车里是" + goods; } }
实践一下:
Home home1 = new Home(); Home home2 = new Home("玉米"); Home home3 = new Home("123"); Console.WriteLine("第一次:"+home1.Zhuangzai ()+"\n第二次:"+home2.Zhuangzai ()+"\n第三次:"+home3.Zhuangzai ()); Console.Read();
看看效果~快到我的拖拉机里来:
感觉还不错,该装的都装进来了。
二、方法重载的要求:
1、在同一个类中;
2、两个方法方法名相同;
3、参数类型或个数必须有所不同;
这里所说的参数不同是指以下几种情况:
① 参数的类型不同
② 参数的个数不同
③ 参数的个数相同时他们的先后顺序不同
注意:系统会认为是同一个方法的两种情况,这样的两个方法不可以在同一个类里,否则系统会报错。
⑴返回类型不同,方法名和参数个数、顺序、类型都相同的两个方法
⑵返回类型相同,方法名和参数的个数、顺序、类型都相同的两个方法,但是参数的名字不同
例如:
① protected void A()
{
Console.WriteLine("aaaaaaaaaaaa");
}
② protected void A(string s, int a)
{ //正确的方法重载
Console.WriteLine("ccccccccccc");
}
③ protected void A(string a, int s)
{
Console.WriteLine("ccccccccccc");
}
④ protected void A(int a,string s)
{
Console.WriteLine("bbbbbbbbbb");
}
① 与②是方法重载
② 与③和④比较一下:②与③是同一个方法,因为他们只是参数的名字不同,②与④是正确的方法重载,因为他们参数的顺序不同