方法的重载是指一个类中可以定义多个方法名相同,但参数不同的方法。 调用时,会根据不同的参数自动匹配对应的方法。实际上,重载的方法已经是完全不同的方法了,只是方法名相同而已。

从定义上看,构成方法的重载要满足以下条件:

  • 多个方法在同一个类中

  • 多个方法具有相同的方法名

  • 多个方法的参数不同,主要体现在

    • 形参类型不同

      例如 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");
    }
}