方法重载是一种操作性多态。有的时候,可能需要在多个不同的实现中对不同的数据执行相同的逻辑操作。以WriteLine方法为例,有时可能向它传递一个格式字符串和其他一些参数,也可能只向它传递一个整数。两者的具体实现肯定是不同的,但在逻辑上,这个方法负责的是输出数据。至于方法内部具体是如何实现的,很多读者并不关心。
在面向对象这样的高级语言中,都允许在一个类中定义多个方法名相同、方法中参数个数和参数顺序不同的方法,对于参数个数不同或者参数列表不同的情况称之为参数列表不同。
需要注意的是这里没有提到方法的返回值。
实例:
利用重载分别求圆、矩形、三角形的面积
海伦公式:S=sqrt(p(p-a)(p-b)(p-c)) p为周长的一半。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication8
{
class Program
{
//写在同一类中
//求圆面积
static void writeArea(int radius)
{
double area = System.Math.PI * radius * radius;
Console.WriteLine("您求圆的面积是:"+area);
}
//求矩形面积
static void writeArea(int width,int length)
{
int area = width * length;
Console.WriteLine("您求矩形的面积是:"+area);
}
//求三角形面积
static void writeArea(int a,int b,int c)
{
double p = (a + b + c) / 2;
double area = System.Math.Sqrt(p * (p - a) * (p - b) * (p - c));
Console.WriteLine("您求三角形的面积是:"+area);
}
static void Main(string[] args)
{
//利用方法的重载进行调用方法
writeArea(3, 4, 5);
writeArea(25);
writeArea(10, 20);
Console.ReadKey();
}
}
}