抽象类通过抽象方法强制子类实现特定行为,提供模板方法封装固定流程,利用构造器校验初始化条件,并通过protected成员控制子类访问范围。

抽象类通过定义抽象方法和受保护的成员,强制子类实现特定行为并遵循统一结构,这是 Java 实现模板约束的核心机制。
声明抽象方法,强制子类重写
在抽象类中使用 abstract 修饰符声明无方法体的方法,子类继承时必须提供具体实现(除非子类也声明为 abstract)。
- 抽象方法不能有方法体,连大括号都不能写:
abstract void doWork(); - 子类若未实现所有抽象方法,编译直接报错,无法通过编译
- 抽象方法可配合访问修饰符(如 protected 或 public),但不能是 private 或 final
提供模板方法,封装固定流程
抽象类可定义 非抽象的 public/final 方法,内部调用抽象方法或受保护的钩子方法,形成“算法骨架”,子类只能填充细节,不能破坏整体流程。
- 例如:
public final void execute() { prepare(); doTask(); cleanup(); } -
prepare()和cleanup()可设为 protected 的默认实现,子类可选择性覆盖 -
doTask()设为 abstract,强制子类定义核心逻辑
限定构造与初始化逻辑
抽象类的构造器虽不能直接实例化,但会在子类构造时被隐式调用,可用于校验参数、初始化共用状态,确保子类对象创建时满足前提条件。
- 可在抽象类构造器中抛出 IllegalArgumentException,拦截非法初始化
- 常配合 final 字段 或 init 块 初始化不可变上下文(如配置、连接池)
- 子类构造器第一行默认调用
super(),可显式传参以适配抽象父类构造签名
限制可见性,控制子类可访问范围
通过 protected 成员(字段、方法)向子类开放必要接口,同时用 private 封装内部实现细节,避免子类误用或破坏封装。
- 公共 API 用 public abstract 方法暴露契约
- 共享工具逻辑用 protected final 方法提供,禁止子类修改
- 关键状态字段设为 protected final 或通过 protected getter 访问,防止随意篡改
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











