什么是方法重载(Method Overloading)?

什么是方法重载(Method Overloading)?

👋 你好,欢迎来到我的博客!我是【菜鸟不学编程】 我是一个正在奋斗中的职场码农,步入职场多年,正在从“小码农”慢慢成长为有深度、有思考的技术人。在这条不断进阶的路上,我决定记录下自己的学习与成长过程,也希望通过博客结识更多志同道合的朋友。 🛠️ 主要方向包括 Java 基础、Spring 全家桶、数据库优化、项目实战等,也会分享一些踩坑经历与面试复盘,希望能为还在迷茫中的你提供一些参考。 💡 我相信:写作是一种思考的过程,分享是一种进步的方式。 如果你和我一样热爱技术、热爱成长,欢迎关注我,一起交流进步!

全文目录:

🚀 前言🔧 一、方法重载的语法规则✔️ 合法的重载示例:✅ 输出结果:

❌ 二、注意:**返回值不同不构成重载**🔥 三、为什么使用方法重载?✔️ 好处:✔️ 举个现实例子:

🚀 四、经典应用场景1️⃣ 构造方法重载(最常见)✅ 输出:

🏁 五、重载和重写(Override)的区别💡 六、总结口诀📝 写在最后

🚀 前言

方法重载:在同一个类中,方法名相同,但参数列表不同(参数的数量、类型或顺序不同),这种现象就叫做方法重载。

简而言之:

✅ 方法名必须相同✅ 参数列表不同(数量、类型、顺序 至少有一个不同)❌ 与返回值无关,仅靠返回值不同无法构成重载

🔧 一、方法重载的语法规则

✔️ 合法的重载示例:

public class Demo {

// 方法1:无参数

public void sayHello() {

System.out.println("Hello!");

}

// 方法2:一个String类型参数

public void sayHello(String name) {

System.out.println("Hello, " + name + "!");

}

// 方法3:两个参数

public void sayHello(String name, int age) {

System.out.println("Hello, " + name + ", you are " + age + " years old.");

}

// 方法4:参数顺序不同

public void sayHello(int age, String name) {

System.out.println("Hi, " + name + "! Age: " + age);

}

public static void main(String[] args) {

Demo d = new Demo();

d.sayHello();

d.sayHello("Alice");

d.sayHello("Bob", 25);

d.sayHello(30, "Charlie");

}

}

✅ 输出结果:

Hello!

Hello, Alice!

Hello, Bob, you are 25 years old.

Hi, Charlie! Age: 30

❌ 二、注意:返回值不同不构成重载

错误示例(无法编译):

public int add(int a, int b) {

return a + b;

}

public double add(int a, int b) { // 错误!仅返回类型不同,不构成重载

return a + b;

}

🛑 提示:Java 无法通过返回类型判断调用哪个方法,参数列表才是唯一依据。

🔥 三、为什么使用方法重载?

✔️ 好处:

✅ 增强代码可读性。✅ 提高代码复用,功能一致的逻辑聚合在一起。✅ 使用更加灵活,减少方法命名的混乱。

✔️ 举个现实例子:

比如一个打印方法:

public void print(String str) { ... }

public void print(int num) { ... }

public void print(double d) { ... }

同一个动作 print(),可以根据不同的数据类型自动匹配对应的方法。

🚀 四、经典应用场景

1️⃣ 构造方法重载(最常见)

public class Person {

String name;

int age;

// 无参构造

public Person() {

this.name = "Unknown";

this.age = 0;

}

// 只有名字

public Person(String name) {

this.name = name;

this.age = 0;

}

// 名字+年龄

public Person(String name, int age) {

this.name = name;

this.age = age;

}

public void show() {

System.out.println(name + " - " + age);

}

public static void main(String[] args) {

Person p1 = new Person();

Person p2 = new Person("Alice");

Person p3 = new Person("Bob", 25);

p1.show();

p2.show();

p3.show();

}

}

✅ 输出:

Unknown - 0

Alice - 0

Bob - 25

🏁 五、重载和重写(Override)的区别

对比方法重载(Overloading)方法重写(Overriding)所在位置同一个类父类与子类之间方法名相同相同参数列表必须不同必须相同返回值无要求通常相同,子类可返回子类型访问修饰符无要求子类权限 ≥ 父类权限关键字无@Override 注解多态支持不支持支持(运行时多态)

💡 六、总结口诀

“重载看参数,重写看父子。名同参异是重载,名参都同叫重写。”

📝 写在最后

如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!你的每一个点赞 👍、收藏 ⭐、关注 ❤️,都是我持续更新的最大动力!

我是一个在代码世界里不断摸索的小码农,愿我们都能在成长的路上越走越远,越学越强!

感谢你的阅读,我们下篇文章再见~👋

相关推荐

卸载软件软件哪个最好用 实用的卸载软件软件排行
365bet体育投注在线

卸载软件软件哪个最好用 实用的卸载软件软件排行

📅 07-02 👁️ 5754
【心得】MHXX各武器實用狩技選擇.前篇
365bet比分

【心得】MHXX各武器實用狩技選擇.前篇

📅 07-03 👁️ 213
火兔命里缺什么? 87年出生命理解析 !
365bet比分

火兔命里缺什么? 87年出生命理解析 !

📅 10-04 👁️ 9533