深入理解OOP(Object-Oriented Programming,面向对象编程)中的重写与重载:从概念到实战!!!

🚀 深入理解OOP(Object-Oriented Programming,面向对象编程)中的重写与重载:从概念到实战

一、核心概念对比表格 📊

特性重写(Override)重载(Overload)
定义子类重新实现父类的同名方法同一类中定义同名但参数不同的方法
方法名✅ 必须相同✅ 必须相同
参数列表❌ 必须完全一致❌ 必须不同(类型/数量/顺序)
发生范围👨👦 父子类之间(继承关系)👤 同一类中
多态类型⏳ 运行时多态(动态绑定)⚙️ 编译时多态(静态绑定)
典型场景子类定制父类行为(如动物叫声)同一功能的不同参数适配(如计算器加法)

二、Mermaid流程图:快速区分重写与重载 🛠️

判断方法定义位置
是否在同一类?
检查参数列表是否不同
重载(Overload)
报错:同一类中不能有完全相同的方法
检查是否为子类继承父类
检查方法签名是否一致
重写(Override)
报错:重写需方法签名完全一致

三、Sequence Diagrams时序图:调用过程演示 ⏱️

🌰 重写场景:子类调用父类重写方法

Animal Dog 客户端 继承关系 重写makeSound() 输出"Bark" 调用makeSound() 返回结果 Animal Dog 客户端

🌰 重载场景:同一类调用不同参数方法

Calculator 客户端 调用add(int a, int b) 返回整数和 调用add(double a, double b) 返回小数和 Calculator 客户端

四、代码实战: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开发中写出更优雅、健壮的代码! 💪
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值