一、方法重载的典型例子
Console.WriteLine()
本身就是方法重载的典型例子:
Console.WriteLine("Hello"); // 输出字符串
Console.WriteLine(100); // 输出整数
Console.WriteLine(3.14); // 输出小数
虽然方法名相同,但参数不同,所以能打印不同类型的数据。
二、方法重载是什么?
方法重载是指:在同一个类中,可以有多个以有多个同名不同参的方法定义。
注:编译器会根据你调用时传入的参数,自动选择合适的方法。
三、方法重载的规则
方法名必须相同
参数的 个数 或 类型 必须不同。
返回值不同不算重载(必须参数不同才行)。
四、方法重载的好处
让代码更简洁。
逻辑更清晰。
同一个功能,可以有多种调用方式。
五、示例:Add()
写一个Add()方法,可以计算整数与浮点数,Add(int, int)`与Add(double, double),同名不同参数
class Calculator
{
// 加法:两个整数
public int Add(int a, int b)
{
return a + b;
}
// 加法:三个整数
public int Add(int a, int b, int c)
{
return a + b + c;
}
// 加法:两个小数
public double Add(double a, double b)
{
return a + b;
}
}
class Program
{
static void Main()
{
Calculator calc = new Calculator();
Console.WriteLine(calc.Add(2, 3)); // 输出 5
Console.WriteLine(calc.Add(2, 3, 4)); // 输出 9
Console.WriteLine(calc.Add(2.5, 3.5)); // 输出 6.0
}
}
六、示例:Print()方法
要求:自己写一个 Print
方法,能打印整数、字符串、浮点数,
七、示例:反例
参数一样但返回类型不同,不算重载。
int Add(int a, int b) { return a + b; }
double Add(int a, int b) { return a + b; } // ❌ 会报错
八、总结
重载 = 同名不同参。
参数可以不同:数量不同、类型不同、顺序不同。
常用在:打印、数学计算、格式化输出等场景。
练习
题目1:写一个 SayHello()
方法
重载为:
无参数 → 输出“Hello!”
有一个
string name
参数 → 输出“Hello, name!”
题目2:写一个 Max()
方法
重载为:
传入两个整数,返回最大值
传入两个小数,返回最大值
传入三个整数,返回最大值
题目3:写一个Print()
方法
*要求:写一个 Print
方法,支持打印整数、字符串和小数。**
定义三个重载方法:
Print(int number)
Print(string text)
Print(double number)
在
Main
方法里分别调用这三种方法。
Print(100);
Print("Hello C#");
Print(3.14);
题目4:写一个Area()
方法
要求:能计算不同图形的面积。
Area(int side)
—— 计算正方形面积Area(int length, int width)
—— 计算矩形面积Area(double radius)
—— 计算圆的面积(πr²,用3.14
替代 π)
Console.WriteLine(Area(5)); // 正方形面积
Console.WriteLine(Area(5, 10)); // 矩形面积
Console.WriteLine(Area(2.5)); // 圆的面积
题目5:写一个 Add
方法**
要求:支持两数相加、三数相加、以及两个小数相加。**
Add(int a, int b)
Add(int a, int b, int c)
Add(double a, double b)
尝试调用:
Console.WriteLine(Add(2, 3));
Console.WriteLine(Add(1, 2, 3));
Console.WriteLine(Add(2.5, 3.5));
参考答案:
class Calculator
{
// 加法(两个整数)
public int Add(int a, int b)
{
return a + b;
}
// 加法(两个小数)
public double Add(double a, double b)
{
return a + b;
}
// 加法(三个整数)
public int Add(int a, int b, int c)
{
return a + b + c;
}
}
题目6: 写一个 Greet
方法,
要求:
Greet()
—— 输出 “你好!”Greet(string name)
—— 输出 “你好,某某!”Greet(string name, int age)
—— 输出 “你好,某某,你今年X岁了!”
👉 提示: 调用:
Greet();
Greet("小明");
Greet("小红", 18);
题目7:写一个 Count
方法,
要求: 能统计不同类型数组的长度。
Count(int[] numbers)
—— 输出整数数组的元素个数Count(string[] words)
—— 输出字符串数组的元素个数
👉 提示:
int[] nums = {1, 2, 3, 4};
string[] names = {"Tom", "Jerry"};
Console.WriteLine(Count(nums)); // 输出 4
Console.WriteLine(Count(names)); // 输出 2
练习总结
方法重载的基本概念(同名不同参)。
如何根据 参数个数、参数类型 来区分重载方法。
在真实场景里,重载方法能让代码更直观。