Java中的方法重载应用
一 方法重载介绍
如果一个类中包含了两个或两个以个以上的方法名相同,但形参列表不同,则称为方法重载。
二 方法重载应用
1 代码示例
public class Overload { // 下面定义了两个test()方法,但方法的形参列表不同 // 系统可以区分这两个方法,这种被称为方法重载 public void test() { System.out.println("无参数"); } public void test(String msg) { System.out.println("重载的test方法 " + msg); } public static void main(String[] args) { Overload ol = new Overload(); // 调用test()时没有传入参数,因此系统调用上面没有参数的test()方法。 ol.test(); // 调用test()时传入了一个字符串参数, // 因此系统调用上面带一个字符串参数的test()方法。 ol.test("hello"); } }
2 运行结果
无参数
重载的test方法 hello
3 结果分析
虽然两个test的方法名相同,但因为他们的形参列表不同,所以系统可以正常区分这两个方法。
三 重载方法里包含个数可变的形参
1代码示例
public class OverloadVarargs { public void test(String msg) { System.out.println("只有一个字符串参数的test方法 "); } // 因为前面已经有了一个test()方法,test()方法里有一个字符串参数。 // 此处的长度可变形参里不包含一个字符串参数的形式 public void test(String... books) { System.out.println("****形参长度可变的test方法****"); } public static void main(String[] args) { OverloadVarargs olv = new OverloadVarargs(); // 下面两次调用将执行第二个test()方法 olv.test(); olv.test("aa" , "bb"); // 下面将执行第一个test()方法 olv.test("aa"); //a // 下面调用将执行第二个test()方法 olv.test(new String[]{"aa"}); //b } }
2运行结果
****形参长度可变的test方法****
****形参长度可变的test方法****
只有一个字符串参数的test方法
****形参长度可变的test方法****
当注释掉第1个test方法,运行结果如下:
****形参长度可变的test方法****
****形参长度可变的test方法****
****形参长度可变的test方法****
****形参长度可变的test方法****
3结果分析
当调用a处代码时,系统会执行重载的test(String)方法,如果需要调用test(String... books)方法,又只想传入一个字符串参数,则可釆用b处代码重栽;而如果将第1个test方法注释掉,所有的test调用都重载第2个test方法。基于以上分析,大部分时候并不推荐重载个数可变的方法,它容易降低程序的可读性。