抽象类可定义构造方法和普通成员变量,用于初始化共性状态;构造方法须非private,子类通过super()调用;成员变量推荐protected,与构造方法配合实现字段复用。

Java 中抽象类可以像普通类一样定义构造方法和普通成员变量,这是它作为“可复用模板”的基础能力——不是空架子,而是有状态、可初始化的父类结构。
构造方法怎么写
抽象类必须有构造方法(哪怕只写一个空实现),因为子类在实例化时会隐式或显式调用它,用于初始化父类的成员变量。
- 构造方法不能是 private(否则子类无法调用 super()),通常用 public 或 protected
- 子类构造器中可通过 super(...) 显式调用父类构造方法,完成字段初始化
- 即使没写任何构造方法,编译器也会提供默认无参构造器;但一旦自定义了构造器,就不会再自动补默认的
普通成员变量怎么声明
抽象类里的字段写法和普通类完全一致,支持所有访问修饰符和类型,它们会被子类继承(权限允许时)。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 推荐用 protected:既避免外部直接访问,又让子类能直接使用,不用 getter/setter
- public static final 常量可被类名直接调用,比如 Vehicle.TYPE
- private 字段也能继承,只是子类需通过父类提供的 public/protected 方法间接访问
两者配合的实际作用
构造方法和成员变量一起,让抽象类真正承担“初始化共性状态”的职责。比如所有车辆都有品牌和最高速度,这些值应在创建子类对象时就确定。
立即学习“Java免费学习笔记(深入)”;
- 子类 new Car("Tesla", 250) 时,会先走 Vehicle(String, int) 构造器,把 brand 和 maxSpeed 赋值给父类字段
- 后续调用 start() 方法时,就能直接使用已初始化的 brand 字段
- 不需要每个子类都重复声明 brand、自己解析参数,复用性立刻体现出来

















