方法重载

java中不允许方法重名,而方法重载允许方法重名(编译能通过)

重载规则:

1,方法名相同;

2,参数不同(参数个数或者参数类型)

public class OverLoadTest {
public static int add(int a,int b){
return a+b;
}
public static int add(int a,int b){//报错:add(int,int)已经被定义,即不允许方法重名
return a+b;
}
public static double add(int a,int b){//报错:add(int,int)已经被定义,返回类型不同并不能重载
return a+b;
}
}

上述代码编译会报错:add(int ,int)方法已经被定义,即不允许重名,当改变返回类型为double,仍然报相同错误,说明返回类型不同并不能重载方法,编译不能通过

public class OverLoadTest {
    public static int add(int a,int b){
        return a+b;
    }
    /*public static int add(int a,int b){//报错:add(int,int)已经被定义,即不允许方法重名
        return a+b;
    }
    public static double add(int a,int b){//报错:add(int,int)已经被定义,返回类型不同并不能重载
        return a+b;
    }*/

    public static int add(int a){//参数个数不同,编译通过,可以构成重载
        return a;
    }

    public static double add(int a,double b){//参数类型不同,编译通过,可以构成重载
        return a+b;
    }

    public static double add(int... a){//不定长参数方法,编译通过,可以构成重载
        int s=0;
        for (int i=0;i<a.length;i++){
            s+=a[i];
        }
        return s;
    }

    public static void main(String[] args) {
        System.out.println("调用add(int)方法:"+add(1));//调用add(int)方法:1
        System.out.println("调用add(int,int)方法:"+add(1,2));//调用add(int,int)方法:3
        System.out.println("调用add(int,double)方法:"+add(1,2.5));//调用add(int,double)方法:3.5
        System.out.println("调用不定长参数add(int...)方法:"+add(1,2,3,4,5));//调用不定长参数add(int...)方法:15.0
        System.out.println("调用不定长参数add(int...)方法:"+add(2));//调用不定长参数add(int...)方法:2
    }
}

  着重说一下不定长参数,不定长参数格式为(type... var),var就是一个type类型的数组,按照数组遍历操作var即可 

原文地址:https://www.cnblogs.com/guochengfirst/p/9425292.html