Java方法重载

Java允许一个类中定义多个方法,只要参数列表不同就行了。如果同一个类中包含了两个或者两个以上的方法的方法名相同,但形参列表不同,则被称为方法重载。

/*
  参数类型不同的重载
*/
public class OverLoad 
{
    //下面定义两个test()方法,但方法的形参列表不同
    //系统可以区分这个方法,被称为方法重载
    public void test(){
    System.out.println("无参数!");
    }
    public void test(String A){
    System.out.println("重载test()方法:"+A);

    }
    public static void main(String[] args)
    {
        OverLoad ol=new OverLoad();
        ol.test();
        ol.test("yes");
    
    }
}

输出结果为:

无参数!
重载test()方法:yes

/*
   参数个数不相同的重载
*/
public class NumOverLoad 
{
    public void test(){
    System.out.println("只有一个字符串参数的test方法!");
    }
    /*
       前面已经有一个test()方法,test()方法里只有一个字符串参数
       此处的个数可变参数里不包括一个字符串参数的形式
    */
    
    public void test(String...books){
    System.out.println("****形参可变的test()方法****");

    }
    public static void main(String[] args)
    {
        NumOverLoad nol=new NumOverLoad();
        //下面两次调用将执行第二个test()方法
        nol.test();
        nol.test("aa","bb");
        //下面调用第一个test()方法
        nol.test("aa");
        //下面调用第二个test()方法
        nol.test(new String[]{"aa"});
    }
}

输出结果:

只有一个字符串参数的test方法!
****形参可变的test()方法****
****形参可变的test()方法****
****形参可变的test()方法****

注意:一般不推荐重载形参参数个数可变的方法,因为在上述例子中,如果需要调用test(String ...books)方法,又只想传入一个字符串参数,则可采用传入字符串组的形式。如果只是简单传入一个字符串,那么2个方法就会出现混淆。

原文地址:https://www.cnblogs.com/OliverQin/p/5060691.html