抽象类是带状态、可初始化、能复用的父类模板,含普通成员变量(推荐protected)、构造器(供super()调用)和具体方法(直接复用),三者协同支撑子类对象创建与行为继承。

抽象类不是“空架子”,而是带状态、可初始化、能复用的父类模板。它虽不能被 new 实例化,但内部可以定义普通成员变量、构造器和具体方法,三者协同工作,支撑子类对象的创建与行为复用。
普通成员变量:用来保存共性状态
抽象类里的字段写法和普通类完全一样,支持所有访问修饰符和类型。它们会被子类继承(权限允许时),用于统一管理子类共享的数据。
- 推荐用 protected:既防止外部直接访问,又让子类能直接使用字段,避免冗余的 getter/setter
- public static final 常量可被类名直接调用,比如 Vehicle.TYPE
- private 字段也能继承,只是子类需通过父类提供的 public/protected 方法间接访问
构造器:专为子类实例化服务
抽象类必须有构造器——哪怕没显式写,编译器也会补一个默认无参构造器。它的作用不是创建自身对象,而是在子类 new 对象时被 super() 调用,完成父类字段的初始化。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 构造器不能是 private,否则子类无法调用 super()
- 通常用 public 或 protected 修饰
- 一旦自定义了构造器,编译器就不再自动提供无参构造器
- 子类构造器第一行默认或显式调用 super(),否则编译报错
具体实现方法:直接复用,无需重写
抽象类中可以定义带方法体的普通方法,子类会自动继承,调用时无需重写,体现代码复用能力。
- 例如 Animal 类中定义 void breathe() { System.out.println("呼吸"); },Dog 继承后可直接调用 dog.breathe()
- 这类方法适合通用逻辑,如日志记录、参数校验、基础计算等
- 结合模板方法模式,抽象类可定义流程骨架,把可变部分留作抽象方法由子类实现
抽象类的核心价值,正在于它把“状态初始化”(成员变量 + 构造器)和“行为复用”(具体方法)整合在一起,让子类在继承时既拿到数据结构,又获得可用逻辑,而不是从零开始重复造轮子。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










