1. 类的修饰符
修饰符类别 | 修饰符 | 说明 |
---|
访问控制符 | public | 顶级类使用时,对所有包可见。嵌套类也可以使用。 |
| 默认 | 没有写访问修饰符时,仅在同一包内可见。 |
| protected (仅嵌套类) | 同一包内以及不同包的子类可见。 |
| private (仅嵌套类) | 仅在外部类内部可见。 |
非访问修饰符 | abstract | 表示该类为抽象类,不能实例化,通常包含抽象方法供子类实现。 |
| final | 表示该类不能被继承。 |
| strictfp | 限定类中所有浮点计算的精度和舍入模式,确保跨平台一致性。 |
| sealed | (从 Java 15 开始)限制哪些类可以继承该类;通常与 permits、non-sealed 配合使用。 |
2. 方法的修饰符
修饰符类别 | 修饰符 | 说明 |
---|
访问控制符 | public | 方法对所有类可见。 |
| protected | 同包内以及不同包中的子类可见。 |
| 默认 | 没有写访问修饰符时,仅在同一包内可见。 |
| private | 仅在当前类内部可见。 |
非访问修饰符 | abstract | 声明方法没有实现,需要子类提供具体实现(只能在抽象类中使用)。 |
| final | 表示该方法不能被子类重写。 |
| static | 表示方法属于类而非对象,可以直接通过类名调用。 |
| synchronized | 用于多线程场景,确保方法在同一时刻只被一个线程执行。 |
| native | 指示该方法由非 Java 代码(如 C/C++)实现。 |
| strictfp | 限定方法中浮点数计算的精度和舍入行为,确保平台间一致性。 |
| default (仅限接口) | 从 Java 8 开始,在接口中为方法提供默认实现。 |
3. 变量的修饰符
3.1 成员变量(字段)
修饰符类别 | 修饰符 | 说明 |
---|
访问控制符 | public | 变量对所有类可见。 |
| protected | 同包内及不同包中子类可见。 |
| 默认 | 没有写访问修饰符时,仅在同一包内可见。 |
| private | 仅在当前类内部可见。 |
非访问修饰符 | static | 变量属于类而非实例,所有对象共享同一份数据。 |
| final | 变量值一经赋值后不能修改(必须在声明时或构造器中初始化)。 |
| transient | 在对象序列化时,该变量不会被持久化。 |
| volatile | 用于多线程环境,确保对变量的读写直接操作主内存,防止线程缓存问题。 |
3.2 局部变量
修饰符类别 | 修饰符 | 说明 |
---|
访问控制符 | 无法使用 | 局部变量不支持 public、protected 或 private。 |
非访问修饰符 | final | 局部变量可以声明为 final,表示赋值后不可更改。 |
| 其他(static、transient、volatile) | 这些修饰符不能用于局部变量。 |
局部变量没有访问修饰符:因为它们只能在声明它们的方法或代码块内访问,无需额外的访问控制。
局部变量不能使用 static:因为 static 修饰符用于类成员(变量和方法),而局部变量并不是类成员,而是在运行时临时创建的。