首先举个例子
方法1
public int add(int a, int b)
{
return a + b;
}
这是个求和的方法
参数是两个int型,返回值是int型,就是计算了整数a+整数b
那么我现在想计算两个小数的和
方法2
public double add1(double a, double b)
{
return a + b;
}
这时候就需要重新写一个方法
那么现在想计算一个小数和一个整数的和呢,还是说计算三个整数的和呢
你需要写大量的,参数和返回值不同的方法 add2,add3,add4.等等。根据实际情况调用的时候,你并不知道到底调用的是几号方法。
这个时候就用到重载这个功能了
方法重载就是在同一个类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同。
调用方法时通过传递给它们的不同个数和类型的参数,以及传入参数的顺序来决定具体使用哪个方法。
即还是上面的两个方法,因为重载的技术,将add1的名字改为add也是不报错的。
当参数为整数的时候,就自动调用第一个方法,当参数为小数的时候,就自动调用第二个方法。
重载方法参数的兼容性
当我把方法一删掉,只保留方法二(参数和返回值都是double类型)
去执行add(1,2),也不会报错,系统会自动给你匹配到方法二(即double可以兼容int,int可以向double转换)
而删掉方法二保留方法一,执行add(1.1,2.1),则会报错,因为double不能向int转换。
在这种兼容性的情况下,调用这个方法,可能有多个重载方法都符合条件,这时候系统就会找出匹配度最高的方法去调用。