🚀 深入理解OOP(Object-Oriented Programming,面向对象编程)中的重写与重载:从概念到实战
一、核心概念对比表格 📊
特性 | 重写(Override) | 重载(Overload) |
---|---|---|
定义 | 子类重新实现父类的同名方法 | 同一类中定义同名但参数不同的方法 |
方法名 | ✅ 必须相同 | ✅ 必须相同 |
参数列表 | ❌ 必须完全一致 | ❌ 必须不同(类型/数量/顺序) |
发生范围 | 👨👦 父子类之间(继承关系) | 👤 同一类中 |
多态类型 | ⏳ 运行时多态(动态绑定) | ⚙️ 编译时多态(静态绑定) |
典型场景 | 子类定制父类行为(如动物叫声) | 同一功能的不同参数适配(如计算器加法) |
二、Mermaid流程图:快速区分重写与重载 🛠️
三、Sequence Diagrams时序图:调用过程演示 ⏱️
🌰 重写场景:子类调用父类重写方法
🌰 重载场景:同一类调用不同参数方法
四、代码实战:JWT工具类中的重载示例 🔑
在之前的JwtUtils
类中,createToken
方法通过重载实现不同参数的灵活调用:
// 重载方法1:默认角色为"ROLE_USER"
public static String createToken(String userId, String type, String userName) {
return createToken(userId, type, userName, "ROLE_USER"); // 调用完整参数版本
}
// 重载方法2:显式指定角色
public static String createToken(String userId, String type, String userName, String role) {
// 生成JWT逻辑(设置有效期、载荷、加密等)
Calendar nowTime = Calendar.getInstance();
nowTime.add(Calendar.DAY_OF_YEAR, 1); // 1天有效期
return JWT.create()
.withAudience(userId)
.withExpiresAt(nowTime.getTime())
.withClaim("role", role)
.sign(Algorithm.HMAC256(userId + "clear"));
}
五、思维导图:知识体系总结 🧠
六、总结 📌
- 重写是“子承父业,改头换面”,体现OOP的继承性和多态性;
- 重载是“一职多能,灵活适配”,提升代码的复用性和可读性。
掌握两者区别,能让你在OOP开发中写出更优雅、健壮的代码! 💪