1 .为什么需要方法重载
请看下面的代码
public static void main(String[] args) {
int a = 10;
int b = 20;
int ret = add(a, b);
System.out.println(ret);
double a2 = 10.5;
double b2 = 20.5;
double ret2 = add(a2, b2);
System.out.println(ret2);
}
public static int add(int x, int y) {
return x + y;
}
由于参数类型不匹配, 所以不能直接使用现有的 add 方法.一种比较简单粗暴的解决方法就是改一个函数名,如下:
public static void main(String[] args) {
int a = 10;
int b = 20;
int ret = addInt(a, b);
System.out.println(ret);
double a2 = 10.5;
double b2 = 20.5;
double ret2 = addDouble(a2, b2);
System.out.println(ret2);
}
public static int addInt(int x, int y) {
return x + y;
}
public static double addDouble(double x, double y) {
return x + y;
}
一个方法(函数)一个方法名(函数名)的代码确实可以解决问题,但不友好的地方是:需要提供许多不同的方法名,取名字本来就是让人头疼。那能否将所有的名字都给成 add 呢?
2.方法重载概念
在Java中方法也是可以重载的。在Java中,如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了。
举个例子:
public static int sum(int a, int b) {
return a + b;
}
public static int sum(int a, int b, int c) {
return a + b;
}
public static double sum(int a, double b, int c) {
return a + b;
}
public static double sum(double b, int c, int a) {
return a + b;
}
public static double sum(double a, double b) {
return a + b;
}
public static void main(String[] args) {
int a = 10;
int b = 20;
int ret = sum(a, b);
System.out.println(ret);
double d1 = 12.3;
double d2 = 12.5;
double ret2 = sum(d1, d2);
System.out.println(ret2);
}
总结:
- 方法名必须相同
- 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)
- 与返回值类型是否相同无关
- 两个方法如果仅仅只是因为返回值类型不同,是不能构成重载的