方法的重载

1、方法重载的优点

1.1、不使用方法重载时存在的缺陷

以下代码不使用“方法重载机制”,不使用overload分析程序存在的缺点?

sumInt, sumDouble, sumLong方法输入功能不同 ,但是相似,都是求和。
在以下功能相似的方法中,分别起了三个不同的名字,这对于程序员来,调用起来不方便。

public class Overload01
{
	public static void main(String[] args)
	{
		int result1 = sumInt(1, 2);
		double result2 = sumDouble(1.0, 2.0);
		long result3 = sumLong(1L, 2L);
		System.out.println(result1);
		System.out.println(result2);
		System.out.println(result3); 	
	}
	
	public static int sumInt(int a, int b)
	{
		return a+b;
	}
	public static long sumLong(long a, long b)
	{
		return a+b;
	}
	public static double sumDouble(double a, double b)
	{
		return a+b;
	}
}

总结:

使用方法重载的前提是:
功能相似,功能不同时尽量让方法名不一样
以下代码便是对上例代码进行了重载处理:

 public static Overload02
 {
	public static void main(String[] args)
 	{
		//参数的类型不同,对应调用的方法不同
 		//此时区分方法不再依靠方法名了,依靠的是参数的的数据类型
 		System.out,println(sum(1, 2));
 		System.out,println(sum(1.0, 2.0));
 		System.out,println(sum(1L, 2L));
 	}
 	//以下三个方法构成了方法重载
 	public static int sum(int a, int b);
 	{
 		return a+b;
 	}
    public static double sum(double a, double b);
	{
		return a+b;
	}	
	public static long sum(long a, long b)
	{
		return a+b;
	}
}

2、方法重载的基本概念

2.1、什么时候考虑使用方法重载?

答:功能相似

2.2、构成方法重载的条件?

  • 在同一个类当中
  • 方法名相同
  • 参数列表不同:
    • 参数数量不同
    • 参数顺序不同
    • 参数类型不同

2.3、方法重载和什么有关系,和什么没有关系?

  • 方法重载和方法名,参数列表有关系
  • 方法重载和返回值类型无关
  • 方法重载和修饰符列表无关
*/
public class Overload02
{//以下两方法构成重载,属于参数数量不同public static void m1(){}public static void m1(int a){}
​	
​	//以下两方法构成重载,属于参数顺序不同
​	
​	public static void m2(double a, int b){}public static void m2(int a, double b){}
​	
​	//构成重载,属于参数类型不同public static void m3(int a);public static void m3(double a);
​	
​	//方法重复,编译报错,方法重载与参数名无关,只与参数的类型有关public static void m4(int b, int a){}public static void m4(int a, int b){}
​	
​	//不构成方法重载,方法重载与返回值类型无关public static void m5(){}public static int m5(){return 1;}
	//方法重载和修饰符无关
	void m6(){}
	public static void m6(){}
}

3、方法重载的具体应用

/*
	方法重载的具体应用
*/

public class Overload03
{
	public static void main(String[] args)
	{
		U.p(123);
	}
}
/*
	自定义输出库
*/
public class U
{
	public static void p(byte b)
	{
		System.out.println(b);
	}
	
	public static void p(short b)
	{
		System.out.println(b);
	}
	
	public static void p(int b) 
	{
		System.out.println(b);
	}
	
	public static void p(long b)
	{
		System.out.println(b);
	}
	
	public static void p(float b)
	{
		System.out.println(b);
	}
	
	public static void p(double b)
	{
		System.out.println(b);
	}
	
	public static void p(boolean b)
	{
		System.out.println(b);
	}
	
	public static void p(char b)
	{
		System.out.println(b);
	}
	
	public static void p(String b)
	{
		System.out.println(b);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值