Java 方法重载

Java 方法重载,第1张

Java 方法重载
public static void main(String[] args) {
	int x1 = 10;
	int x2 = 20;
	int retValue1 = sumInt(x1 , x2);
	System.out.println(x1 + "+" + x2 + "=" + retValue1);
	long y1 = 10L;
	long y2 = 20L;
	long retValue2 = sumLong(y1 , y2);
	System.out.println(y1 + "+" + y2 + "=" + retValue2);
	double z1 = 10.0;
	double z2 = 20.0;
	double retValue3 = sumDouble(z1, z2);
	System.out.println(z1 + "+" + z2 + "=" + retValue3);
}
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 void main(String[] args) {
	int x1 = 10;
	int x2 = 20;
	int retValue1 = sum(x1 , x2);
	System.out.println(x1 + "+" + x2 + "=" + retValue1);
	long y1 = 10L;
	long y2 = 20L;
	long retValue2 = sum(y1 , y2);
	System.out.println(y1 + "+" + y2 + "=" + retValue2);
	double z1 = 10.0;
	double z2 = 20.0;
	double retValue3 = sum(z1, z2);
	System.out.println(z1 + "+" + z2 + "=" + retValue3);
}
public static int sum(int a , int b){
	return a + b;
}
public static long sum(long a , long b){
	return a + b;
}
public static double sum(double a , double b){
	return a + b;
}

以上代码使用了方法重载机制,我们可以看到,三个“功能相似”的方法名字都叫做sum,只不过方法的形参不同,这样对于程序员来说,调用方法时所需要记忆的方法名更少一些,代码更加美观一些。
什么是方法重载呢?
方法重载(overload)是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数以及类型不同的参数的排列书序不同。调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。方法重载通常用于创建完成一组任务相似但参数的类型或参数的个数不同的方法。调用方法时通过传递给它们的不同个数和类型的实参来决定具体使用哪个方法。
什么情况下我们考虑使用方法重载呢?
在同一个类当中,如果多个功能是相似的,可以考虑将它们的方法名定义的一致,使用方法重载机制,这样便于程序员的调用,以及代码美观,但相反,如果两个方法所完成的功能完全不同,那么方法名也一定要不一样,这样才是合理的。
代码满足什么条件的时候构成方法重载呢?满足以下三个条件:
● 在同一个类当中。
● 方法名相同。
● 参数列表不同:个数不同算不同,顺序不同算不同,类型不同也算不同。

public class U {
public static void p(){
	System.out.println();
}
public static void p(int data){
	System.out.println(data);
}
public static void p(long data){
	System.out.println(data);
}
public static void p(float data){
	System.out.println(data);
}
public static void p(double data){
	System.out.println(data);
}
public static void p(boolean data){
	System.out.println(data);
}
public static void p(char data){
	System.out.println(data);
}
public static void p(String data){
	System.out.println(data);
}
}
public class UTest {
	public static void main(String[] args) {
		U.p("hello world!");
		U.p(10);
		U.p(9.0);
		U.p(false);
		U.p('国');
		int a = 10;
		int b = 20;
		int c = a + b;
		U.p(a + "+" + b + "=" + c);
	}
}

总结归纳
U.p(a + “+” + b + “=” + c);
+号做的是字符串的拼接
将a,b,c的内容转化为字符串类型
此时传递的参数为字符串String类型U.p调用的是
public static void p(String data){
System.out.println(data);
}方法
除非我不想赢,不然我不会输。
有问题请私信;

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5435359.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存