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个方法就会出现混淆。