Java 三大修饰符 abstract / static / final 速记笔记
2026/5/27 16:32:52 网站建设 项目流程

Java 三大修饰符 abstract / static / final 速记笔记

这篇博客帮你把三个核心修饰符的用法整理得清清楚楚,考试复习、日常查阅都能用~



一、abstract(抽象的)

用来定义抽象类和抽象方法,核心作用是强制子类实现多态。

1. 修饰类(抽象类)

- 语法: abstract class 类名 {}
- 特点:- 编译后会生成独立的 .class 文件
- 不能直接 new 创建对象,但可以声明引用
- 可以定义成员变量、成员方法、构造方法(供子类创建对象时调用)
- 既可以包含抽象方法,也可以包含非抽象方法

2. 修饰方法(抽象方法)

- 语法: 访问修饰符 abstract 返回值类型 方法名(形参列表); (注意:没有方法体,连 {} 都没有)
- 特点:- 只能定义在抽象类中
- 子类继承抽象类后,如果不想自己成为抽象类,就必须重写所有抽象方法,否则子类也得声明为抽象类
- 访问修饰符和 abstract 没有先后顺序要求



二、static(静态的)

用来修饰属性、方法、代码块和内部类,核心特点是属于类,而不是对象。

1. 修饰属性(静态变量/类变量)

- 语法: 访问修饰符 static 数据类型 属性名;
- 特点:- 属于整个类,所有对象共享同一份数据,和创建多少个对象无关
- 访问方式(推荐用类名访问):- 推荐: 类名.静态属性名
- 不推荐: 对象名.静态属性名

2. 修饰方法(静态方法)

- 语法: 访问修饰符 static 返回值类型 方法名(形参列表) { 方法实现 }
- 特点:- 访问方式: 类名.静态方法名(实参) (推荐)
- 静态方法的访问限制:- 只能直接访问本类的静态成员(静态属性、静态方法)
- 不能直接访问非静态成员,也不能使用 this / super 关键字
- 可以被子类继承,但只能被静态方法覆盖,没有多态效果

3. 修饰初始化代码块

- 动态代码块(无 static ):创建对象时执行,按属性定义顺序初始化属性
- 静态代码块(带 static ):类加载时执行,按静态属性定义顺序初始化静态属性
- 补充:类加载的触发时机1. 第一次创建该类的对象
2. 第一次使用该类的静态成员
3. 子类类加载时,会先触发父类的类加载



三、final(最终的、最后的)

用来修饰变量、方法、类,核心特点是不可修改。

1. 修饰变量(常量)

- 局部变量、实例变量、静态变量都可以被修饰
- 特点:- 只能赋值一次,赋值后不可修改
- 实例变量被 final 修饰时,不会分配默认值,必须手动初始化(声明时、构造方法中、动态代码块都可以)
- 静态变量被 final 修饰时,也不会分配默认值,初始化时机为声明时或静态代码块中
- 修饰引用时,引用的地址不可修改,但对象内部的数据可以修改

2. 修饰方法

- 可以被子类继承,但不允许被子类重写

3. 修饰类

- 被 final 修饰的类不能被继承(没有子类)
- 常见例子: String 、 System 、 Math 等



小补充:三个修饰符的组合注意事项

1. abstract 和 final 不能同时修饰类( abstract 要求被继承, final 禁止被继承,冲突)
2. abstract 和 static 不能同时修饰方法( abstract 方法需要被子类重写, static 方法不能被重写)
3. abstract 和 private 不能同时修饰方法( abstract 方法需要被子类实现, private 方法对子类不可见)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询