方法的重载(overload)
-
重载就是在一个类中,有相同的函数名称,但形参不同的函数。
-
a. 参数的类型不同,对应调用的方法不同
b. 此时区分方法的不在依靠方法名,依靠的是参数的数据类型(实参)
-
方法重载的规则:
- 在同一个类中
- 方法名相同
- 参数列表不同( 数量不同 、类型不同 、顺序不同 等)
-
方法重载和什么有关,和什么无关?
a. 方法重载和方法名+参数列表有关
b. 方法重载和返回值类型无关
c. 方法重载和修饰符列表无关
-
实现理论:
方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,已选择对应的方法,如果匹配失败,则编译器报错。
例子
public class Demo01 {
public static void main(String[] args) {
//调用两个形参的max方法
int max1 = max(20, 50);
System.out.println("调用的第一个方法最大值为:"+max1);
System.out.println("---------------------");
//调用三个形参的max方法
int max2 = max(50, 60, 80);
System.out.println("调用的第二个方法最大值为:"+max2);
}
//两个形参比大小
public static int max(int num1, int num2) {
int result = 0;
if (num1 == num2) {
System.out.println("num1==num2");
return 0; //return可以终止方法
}
if (num1 > num2) {
result = num1;
}else {
result = num2;
}
return result;
}
//三个形参比大小
public static int max(int num1, int num2, int num3) {
int result1 = 0;
if (num1 == num2) {
if (num2 == num3) {
System.out.println("num1==num2==num3");
return 0;
}
}
if (num1 > num2) {
if (num1 > num3) {
result1 = num1;
}else {
result1 = num3;
}
}
if (num2 > num1) {
if (num2 > num3) {
result1 = num2;
}else {
result1 = num3;
}
}
return result1;
}
}