抽象类可定义普通成员变量和方法,支持所有访问修饰符及完整方法体;可声明构造方法供子类调用;含抽象方法必须用abstract修饰,但抽象类可无抽象方法。

普通成员变量怎么写
抽象类中声明的成员变量和普通类完全一致,支持所有访问修饰符(private、protected、public)和各种数据类型:
- private int id; —— 子类不可直接访问,但可通过 getter/setter 使用
- protected String name; —— 子类可直接继承并访问
- public static final double PI = 3.14159; —— 支持静态常量
普通方法怎么写
抽象类中的普通方法拥有完整的方法体,可被子类直接继承调用,也可选择重写:
- 方法签名不加 abstract 关键字
- 可以是 public、protected,不推荐 private(子类无法使用,失去复用意义)
- 可以调用本类的成员变量和其他普通方法
- 示例:public void printInfo() { System.out.println("Name: " + name); }
构造方法和初始化逻辑
抽象类虽不能被实例化,但可以定义构造方法,供子类在 super() 中调用,用于初始化父类成员变量:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
- 子类构造器第一行默认或显式调用 super(...)
- 构造方法中可对 protected 或 private 成员变量赋初值
- 例如:protected Animal(String name) { this.name = name; }
关键注意事项
这些细节决定设计是否合理:
立即学习“Java免费学习笔记(深入)”;
- 含抽象方法的类必须用 abstract 修饰;但抽象类可以没有抽象方法
- 抽象方法不能是 private、static 或 final —— 否则无法被子类重写
- 普通方法和成员变量的存在,让抽象类真正承担“模板+基础实现”的双重角色

















