Java方法的重载

本文介绍了Java中方法重载的概念,强调了重载的规则:方法名相同但参数列表不同。讨论了返回类型在重载中的作用,并通过示例展示了如何通过重载方法以实现不同类型的参数比较,包括两个数、不同类型数以及三个数的最大值比较。此外,文中提到后续将更新更多相关规范和想法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

重载就是在一个类中,有相同的函数(方法)名称,但形参不同的函数(方法)。【参考文献】

方法的重载的规则:

方法名必须相同
参数列表必须不同(个数不同、类型不同、参数排列顺序不同等)。
方法的返回类型可以相同也可以不同
仅仅返回类型不同不足以成为方法的重载
实现理论:
加粗样式
方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。
重载的意义:

是为了方便外界对方法进行调用,什么样的参数程序都可以找到对应的方法来执行,体现的是程序的灵活性
如下代码块,max方法比较大小只能是两个lnt类型相比较,那么我们如何让max方法可以比较两个double类型的数,甚至比较一个int类型的数,和一个double类型的数呢?这里就需要使用方法的重载。

package cn.test;
/*
 * 本类用于测试重载01
 */
public class TestHeavyLoad {

	public static void main(String[] args) {
		int max = max(15,35);
		System.out.println(max);//35
	}
	//两个int类型相比较
	public static int max(int a,int b) {

		if(a == b) {
			System.out.println("两值相等");
			return 0;
		}else if(a > b) {
			return a;
		}else {
			return b;
		}
	}

}

实现效果如下(两个数,不同类型):【参考文献】

package cn.test;
/*
 * 本类用于测试重载02
 */
public class TestHeavyLoad {

	public static void main(String[] args) {
//		int max = max(15,35);//35
//		double max = max(15.5,35.5);//35.5
//		double max = max(35,15.5);//35.0
		double max = max(35.8,15);//35.8
		
		System.out.println(max);
	}
	
	//两个int类型相比较
	public static int max(int a,int b) {

		if(a == b) {
			System.out.println("两值相等");
			return 0;
		}else if(a > b) {
			return a;
		}else {
			return b;
		}
	}
	//两个double类型相比较
	public static double max(double a,double b) {

		if(a == b) {
			System.out.println("两值相等");
			return 0;
		}else if(a > b) {
			return a;
		}else {
			return b;
		}
	}
	//第一个为int类型,第二个为double类型
	public static double max(int a,double b) {

		if(a == b) {
			System.out.println("两值相等");
			return 0;
		}else if(a > b) {
			return a;
		}else {
			return b;
		}
	}
	//第一个数为double类型,第二个数为int类型
	public static double max(double a,int b) {

		if(a == b) {
			System.out.println("两值相等");
			return 0;
		}else if(a > b) {
			return a;
		}else {
			return b;
		}
	}
}

那么我想利用max方法实现三个数的比较,取最大值呢?实现效果如下:

package cn.test;
/*
 * 本类用于测试重载03
 */
public class TestHeavyLoad {

	public static void main(String[] args) {
//		int max = max(15,35);//35
		int max = max(35,66,18);//66
		System.out.println(max);
	}
	
	//两个int类型相比较
	public static int max(int a,int b) {

		if(a == b) {
			System.out.println("两值相等");
			return 0;
		}else if(a > b) {
			return a;
		}else {
			return b;
		}
	}
	//比较三个数,取最大值
	public static int max(int a,int b,int c) {
		//定义一个result变量来接受最大值,局部变量要声明初始值。
		int result = 0;
		result = a;
		if(result == b) {
			if(result == c) {
				System.out.println("三个数都相等!");
				return 0;
			}else if(result > c) {
				return result;
			}else {
				return c;
			}
		}else if(result > b) {
			if(result > c) {
				return result;
			}else {
				return c;
			}
		}else {
			if(b > c) {
				return b;
			}else {
				return c;
			}
		}
	}
}

还有呢,就是我想用int类型来接受两个double类型的数相比较呢?实现效果如下:

package cn.test;
/*
 * 本类用于测试重载04
 */
public class TestHeavyLoad {

	public static void main(String[] args) {
//		int max = max(15,35);//35
		int max = max(18.6,32.3);//32
		System.out.println(max);
	}
	
	//两个int类型相比较
	public static int max(int a,int b) {

		if(a == b) {
			System.out.println("两值相等");
			return 0;
		}else if(a > b) {
			return a;
		}else {
			return b;
		}
	}
	//两个double类型相比较,返回值为int类型
	public static int max(double a,double b) {

		if(a == b) {
			System.out.println("两值相等");
			return 0;
		}else if(a > b) {
			return (int)a;
		}else {
			return (int)b;
		}
	}
}

差不多就这些了,还有其他的一些想法啊,规范啊后面再更新补充。
最后来自小编的福利

小编整理了一份大厂真题的面试资料,以及2021最新Java核心技术整理的资料集锦,需要领取的小伙伴可以 *私聊关注我* 免费领取 ,编程的世界永远向所有热爱编程的人开放,这是一个自由,平等,共享的世界,我始终是这样坚信的。
喜欢小编的分享可以点赞关注哦,小编持续为你分享最新文章 和 福利领取哦

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值