方法的重载是指一个类中可以定义多个方法名相同,但参数不同的方法。 调用时,会根据不同的参数自动匹配对应的方法。实际上,重载的方法已经是完全不同的方法了,只是方法名相同而已。
从定义上看,构成方法的重载要满足以下条件:
-
多个方法在同一个类中
-
多个方法具有相同的方法名
-
多个方法的参数不同,主要体现在
-
形参类型不同
例如
add(int num)
和add(double num)
-
形参个数不同
例如
add()
、add(int num1)
和add(int num1, int num2)
-
形参顺序不同
例如
add(int num1,double num2)
和add(double num2,int num1)
-
注意事项:
-
只有返回值不同,不构成方法的重载
例如
int a(String str){}
与void a(String str){}
不构成方法重载 -
只有形参的名称不同,不构成方法的重载
例如
int a(String str){}
与int a(String s){}
不构成方法重载 -
方法的重载与修饰符无关
补充:
当实参与多个重载方法的形参都不匹配时,根据基本数据类型的级别高低,优先往高走临近的类型,例如:
public class Test{
public static void main(String[] args){
add(5L); // 输出:------3
// 级别:byte,short,char-->int-->long-->float--->double
}
public static void add(double num1){
System.out.println("------2");
}
public static void add(float num1){
System.out.println("------3");
}
/*
public static void add(long num1){
System.out.println("------4");
}
*/
public static void add(int num1){
System.out.println("------1");
}
}