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