方法重载是指一个类中可以定义的多个同名方法
但参数不同的方法,调用时会根据参数不同匹配对应的方法。

我们下面来看一个示例:

【示例】同样的方法名,但参数不同,发生的方法重载:

public class Test{
    public static void main(String[]args){
        System.out.println(m(1,1)); //结果是2
        System.out.println(m(0.1,0.1)); //结果是0.2
        System.out.println(m(1,1,1)); //结果是3
        System.out.println(m("嘤嘤嘤"));//结果:嘤嘤嘤
        System.out.println(m(1,"嘤")); //结果:1嘤
    }
    /** m方法 */
    public static int m(int a,int b){
        int sum=a+b; 
        return sum;  
    }
    // 方法名相同,参数类型不同,构成重载
    public static double m(double a,double b){
        double sum=a+b; 
        return sum;  
    }
    //方法名相同,参数类型相同,参数个数不同,构成重载
    public static int m(int a,int b,int c){
        int sum=a+b+c;
        return sum
    }
    //方法名相同,参数类型不同,参数个数不同,构成重载
    public static String m(String a){
        String sum=a;
        return sum;
    }
    //方法名相同,参数类型不同,参数个数不同,参数顺序不同,构成重载
    public static double m(int a,double b){
        double sum=a+b;
        return sum;
    }
    //方法名相同,参数类型不同,参数个数不同,参数顺序不同,不构成重载
    public static double m(double b,int a){
        double sum=b+a;
        return sum;
    }
}

根据方法名、参数类型、参数个数、参数顺序。构成重载并匹配相对应的语句

但在有几种情况,可能不会发生方法重载关系
如:

1.方法名不相同:

int m(int a){}

int k(int a){}
//m方法和k方法之间不成立重载关系

2.参数名不同:

int a(String str){}

int a(String s){}
//参数名不同,不成立方法重载

3.返回值类型不同:

int a(String str){}

void a(String str){}
//返回值类型不同,不成立方法重载

雷区:

  • 方法重载的条件是 不同含义、形参类型、形参个数、形参顺序不同
  • 重载的方法,实际是完全不同的方法,只是名称相同而已。