在自然语言中,一个词语如果有多重含义,那么就说该词语被重载了,具体代表什么含义需要结合具体的场景。
在Java中方法也是可以重载的。
在Java中,如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了。
在java中重载运用最频繁的就是构造函数
例如下面这个代码
//函数重载
import java.util.Scanner;
public class helloworld{
//形参是两个int的add
public static int add(int x ,int y){
return x+y;
}
//形参是两个double的add
public static double add(double x ,double y){
return x+y;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = scanner.nextInt();
System.out.println(add(a,b));
double x = scanner.nextDouble();
double y = scanner.nextDouble()1;
System.out.println(add(x,y));
}
}
结果
对于函数重载必须有几点要求:
- 方法名必须相同
- 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序不同,三者必须满足其中一个)
- 与返回值类型是否相同无关(方法名相同,参数列表相同的两个函数都不成重载,反而会报错)
public class helloworld{
//形参是两个int的add,返回值为int
public static int add(int x ,int y){
return x+y;
}
//形参是两个int的add,返回值为doule
public static double add(int x ,int y){
return x+y;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = scanner.nextInt();
System.out.println(add(a,b));
// double x = scanner.nextDouble();
// double y = scanner.nextDouble()1;
// System.out.println(add(x,y));
}
}
报错:java: 已在类 helloworld中定义了方法 add(int,int)
本质上是因为编译器正是通过参数列表不同来区别不同的方法入口的,一旦参数列表相同,那么就么有办法区别了。
好了,java的方法重载就说到这里了