子类重写父类方法的核心价值在于支撑多态,实现同一调用根据对象类型动态适配不同行为;它支持可插拔设计、分离通用与特有逻辑,并可通过super实现增强式复用。

子类重写父类方法,核心价值在于让同一份调用逻辑能根据实际对象类型自动适配不同行为——这正是灵活性的来源。它不是简单“换掉一个方法”,而是为多态提供落地支撑,使程序能在不修改调用方代码的前提下,响应不同子类的具体实现。
重写让“同一种调用”产生不同效果
当父类引用指向不同子类对象时,调用相同方法名,执行的却是各自重写后的逻辑:
- 比如 Animal animal = new Dog(); animal.makeSound(); 输出“汪汪汪”
- 而 animal = new Cat(); animal.makeSound(); 输出“喵喵喵”
- 调用代码完全没变,行为却随对象类型动态切换
重写支撑可插拔的设计结构
系统依赖父类或接口定义契约,具体实现由子类提供。新增子类只需重写对应方法,无需改动原有流程:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 支付模块定义 PaymentProcessor 抽象类,含 process() 方法
- 微信支付、支付宝、银行卡各自继承并重写 process()
- 业务层只面向 PaymentProcessor 编程,更换支付方式只需替换子类实例
重写让通用逻辑与特有逻辑自然分离
父类封装共性(如日志记录、参数校验、事务开启),子类专注差异(如具体查询SQL、API地址、计算规则):
- 父类 UserService.updateUser() 统一做非空校验 + 开启事务 + 调用抽象方法 doUpdate()
- 子类重写 doUpdate(),分别实现数据库更新、远程服务调用、缓存同步等不同策略
- 既避免重复校验代码,又保留各场景定制空间
重写配合 super 实现“增强式复用”
子类不必从零写起,可在父类逻辑基础上叠加或调整:
- @Override public void save() { super.save(); sendNotification(); }
- 先执行父类保存逻辑,再追加通知动作
- 或在父类逻辑前加权限检查、后加审计日志
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










