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方法。基于以上分析,大部分时候并不推荐重载个数可变的方法,它容易降低程序的可读性。

你可能感兴趣的:(java)