抽象类通过提取共性逻辑、定义模板方法、提供默认实现,显著减少子类重复代码:统一定义公共字段与校验方法;用模板方法控制流程骨架并留出可变步骤供子类实现;提供可选的protected工具方法;结合接口分工协作,实现高复用与强约束。

抽象类通过提取共性逻辑、定义模板方法、提供默认实现,能显著减少子类重复代码。
提取公共字段和方法到抽象父类
把多个子类都用到的属性和基础方法,直接写在抽象类里。子类继承后自动获得,不用各自重复声明。
- 比如订单处理系统中,订单编号、创建时间、状态等字段,可在抽象类
AbstractOrder中统一定义 - 通用校验逻辑(如非空检查、金额合法性)也可封装为
validate()方法,由子类直接调用或选择性重写
使用模板方法模式控制流程骨架
抽象类定义算法主干(模板方法),把可变步骤声明为 abstract 或 protected 钩子方法,由子类定制细节。
- 例如
processOrder()是 final 模板方法:先校验 → 再扣库存 → 最后发通知;其中deductInventory()和sendNotification()可设为 abstract,让不同订单类型(普通/团购/跨境)各自实现 - 这样既保证流程一致,又避免子类重复写校验和通知等固定逻辑
提供带默认实现的 protected 方法
对部分子类可能复用、但又不需要强制重写的逻辑,用 protected + 具体实现的方式提供“可选增强”能力。
- 比如日志记录、参数脱敏、简单转换工具等,放在抽象类里作为
logOperation()、maskPhone(String) - 子类按需调用,不强制继承负担,也不用每个类都 copy-paste 同一段工具代码
合理组合抽象类与接口
抽象类负责“是什么”和“怎么做一部分”,接口负责“能做什么”。两者结合更灵活地复用与约束。
- 例如定义
Payable接口规范支付行为,再用AbstractPayment抽象类实现通用签名、验签、异步回调处理等 - 微信支付、支付宝支付等子类只需关注自身特有逻辑(如调起 SDK、解析特定响应),其余交由抽象类兜底
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











