Java 重载
Java 重载
java
允许一个类中含有多个同名方法,但要求各个同名方法的形参数量或类型或顺序不一致。
调用方法时按照传入的实参调用对应的方法,这就叫重载。
如果同名方法且形参一致,那就不叫重载了,那叫方法重复定义,是会报错的。
重载的案例
在 Java 中 System.out.println()
就采用了重载,使其即能传入多种类型的数据,且打印,如String
、int
、double
、boolean
.....等类型
重载的作用
- 能减少给方法起名和记名的麻烦。
- 不用专门为不同形参类型或形参数量而专门再其一个方法名,即:同一个方法名,通过传入的实参匹配对应的方法
Java
本身不支持方法默认值,但是我们可以用重载使其达到形参默认值的效果,即:在不传入实参的情况下我们通过重载为其添加默认实参
重载的实际应用
计算器
如果按照普通的方法定义成员方法,那么我们需要定义四个不同名字的方法才能满足我们的计算需求,但是用重载则可以只使用一个方法名,通过传入的不同参数类型自动匹配要调用的方法
public class ...... {
public static void main (String[] args) {
Calculator addObj = new Calculator();
System.out.println(addObj.add(1, 1));
System.out.println(addObj.add(1, 1.1));
System.out.println(addObj.add(1.1, 1));
System.out.println(addObj.add(2.2, 3.3));
}
}
class Calculator {
// 加法
public int add (int num1, int num2) {
return num1 + num2;
}
public double add (int num1, double num2) {
return num1 + num2;
}
public double add (double num1, int num2) {
return num1 + num2;
}
public double add (double num1, double num2) {
return num1 + num2;
}
}
通过重载,我们可以通过传入不同的参数类型,让Java
为我们自动调用对应的方法,无需专门为每个方法都其一个名字
形参默认值
形参默认值:即当我们调用方法时,不传递参数,程序会自动帮我们传入我们设置好的默认值。
假如我们现在要定义一个类,记录班里学生姓名,年龄,性别,但是这个班里的学生几乎都是 18 岁,男生据多,如果我们每次调用方法都要传入所有的信息是不是很麻烦,所以形参默认值就派上用场了
public class ...... {
public static void main (String[] args) {
Student stuobj = new Student();
System.out.println("姓名\t年龄\t性别");
stuobj.stuInfo("张三", (byte)19, '男');
stuobj.stuInfo("小红", (byte)18, '女');
stuobj.stuInfo("小明");
stuobj.stuInfo("李四");
stuobj.stuInfo("王五");
}
}
class Student {
// 打印学生信息
public void stuInfo (String name, byte age, char gender){
System.out.println(name + "\t" + age + "\t" + gender);
}
// 为方法设置默认值
public void stuInfo (String name) {
// 调用原方法,并传入我们要设置的默认值
stuInfo(name, (byte)18, '男');
}
}
通过默认值,我们如果不传入年龄与性别,默认年龄性别就为18
、'男'
,如果全部所有参数都传入了则按照我们传入的打印。
重载细节注意事项
- Java 是通过形参匹配方法的
- 同名方法要满足重载条件,一定需要具备 参数类型不一致或参数数量不一致
- 如果方法名一致,且参数一致的话为重复定义方法,会报错
- 重载对形参名称、形参数量、返回值没有要求,但一定不能出现两个同名方法形参列表一致的情况。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)