抽象类通过提供非抽象方法、模板方法、共享字段及钩子方法,实现逻辑复用与灵活扩展。它支持默认行为继承、流程控制、状态共享和可选定制,提升代码健壮性与可维护性。

抽象类通过定义通用方法和部分实现,让子类直接继承复用,同时保留扩展灵活性。
定义带具体实现的非抽象方法
抽象类中可以包含普通方法(有方法体),这些方法会被所有子类自动继承,无需重写就能直接调用。
- 适合封装子类共有的逻辑,比如日志记录、参数校验、资源初始化等
- 例如:protected void logOperation(String action) { System.out.println("执行操作:" + action); } 可被多个子类共用
- 子类可选择性地重写该方法,也可直接使用父类版本
提供默认行为的模板方法模式
在抽象类中定义一个final方法,把流程骨架写死,再将可变步骤声明为抽象方法,由子类实现。
- 典型结构:final void process() { init(); doWork(); cleanup(); },其中 doWork() 是 abstract
- 保证核心流程一致,又允许子类定制关键环节
- 避免子类遗漏或错乱执行顺序,提升代码健壮性
共享字段与构造逻辑
抽象类可声明 protected 字段,并在构造器中完成初始化,子类创建实例时自动获得这些状态。
- 比如统一配置项:protected final Config config = loadConfig();
- 子类构造器可通过 super() 调用抽象父类构造器,复用初始化逻辑
- 避免每个子类重复加载配置、连接资源等耗时操作
组合抽象方法与默认实现的钩子方法
除了强制子类实现的 abstract 方法,还可提供空实现的 hook 方法(如 protected void onBeforeSave() {}),供子类按需覆盖。
- 父类主流程中调用该 hook,不影响默认行为
- 子类只在需要时才重写,不强制实现,降低使用门槛
- 比抽象方法更灵活,适合“可选增强”场景
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











