概念
方法重载是指在一个类中定义多个同名的方法,但要求每个具有不同的参数或参数的个数。
我们可以理解为方法重载可在不改变原方法的基础上,新增功能。方法重载算是提供了函数可扩展的能力。
注意事项
1.并不是只有构造方法可以重载,普通方法也是可以重载的。
2.方法重载时,两个方法必须要方法名相同,但参数类型或个数必须要有所不同。
3.和返回值没有关系,和参数的个数和类型有关。
好处
1.对多个属性进行赋值时,不需要重复的写实例名。
2.可以保证用户在new一个对象时,必须对某一个属性进行赋值。
构造方法重载
比如说一只猫在出生的时候,就给这只猫起好名字了,定义一个Cat类的构造方法,返回一个字符串就好了,代码如下:
public class Cat
{
private string name = "";
public Cat(string name)
{
this.name = name;
}
public string Shout()
{
return "我的名字叫" + name + " 喵";
}
}
客户端代码:
private void button1_Click(object sender, EventArgs e)
{
Cat cat = new Cat("咪咪");
MessageBox.Show(cat.Shout());
}
最后显示结果:
这是刚出生有名字的猫,那如果刚出生没有起好名字的该怎么办呢?猫也得分个公母吧,这时候就要用到方法重载了。
public class Cat
{
private string name = "";
private char gender = ' ';
public Cat(string name)
{
this.name = name;
}
public Cat()
{
this.name = "";
}
public Cat(char gender)
{
this.gender = gender;
}
public string Shout()
{
return "我的名字叫" + name + " 喵";
}
public string Shout1()
{
return "我没有名字" + name + " 喵";
}
public string Shout2()
{
return "我是" + gender +"猫" + " 喵";
}
客户端代码:
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Cat cat = new Cat("咪咪");
MessageBox.Show(cat.Shout());
}
private void button2_Click(object sender, EventArgs e)
{
Cat cat1 = new Cat();
MessageBox.Show(cat1.Shout1());
}
private void button3_Click(object sender, EventArgs e)
{
Cat cat2 = new Cat('公');
MessageBox.Show(cat2.Shout2());
}
最后显示结果:
普通方法重载
计算两个数的和,要考虑两个都是整数类型的,还有一个整数一个小数类型的,还考虑两个都是小数类型的。
1.不使用方法重载:
static void Main(string[] args)
{
Console.WriteLine(AddNumber1(2,6));
Console.WriteLine(AddNumber2(1, 2));
Console.WriteLine(AddNumber3(3, 2.2));
Console.ReadKey();
}
public static int AddNumber1(int num1,int num2)
{
return num1 + num2;
}
public static double AddNumber2(int num1, double num2)
{
return num1 + num2;
}
public static double AddNumber3(double num1,double num2)
{
return num1 + num2;
}
不用方法重载,每次都要重新定义一个函数名,然后作用是一样的,造成了“资源浪费”,使用方法重载就可以用相同的函数名,去完成这些功能。
2.使用方法重载:
static void Main(string[] args)
{
Console.WriteLine(AddNumber(2,6));
//Console.WriteLine(AddNumber2(1, 2));
//Console.WriteLine(AddNumber3(3, 2.2));
Console.ReadKey();
}
public static int AddNumber(int num1,int num2)
{
return num1 + num2;
}
public static double AddNumber(int num1, double num2)
{
return num1 + num2;
}
public static double AddNumber(double num1,double num2)
{
return num1 + num2;
}
总结
方法重载用的地方还是挺多的,多加练习,就能掌握了。