当前位置: 首页 > news >正文

Java中的修饰符

在 Java 中,修饰符(Modifiers)是用来修改类、方法、变量、构造器等定义的关键字。它们主要分为两大类:访问修饰符和非控制修饰符。

以下是 Java 中所有修饰符的详细分类和说明:
一、 访问修饰符 (Access Modifiers)
访问修饰符用于设置类、接口、变量、方法和构造器的访问级别(可见性)。

Java 中有 4 种访问修饰符:
public (公共的):
适用范围: 类、接口、方法、变量、构造器。
可见性: 权限最高。被 public 修饰的成员可以被任何地方的任何代码访问。
protected (受保护的):
适用范围: 方法、变量、构造器、内部类。
可见性:
可以被同一个包 (package) 中的所有类访问。
可以被不同包中的子类访问。
default (默认的/包私有的):
适用范围: 类、接口、方法、变量、构造器。
可见性: 这是不写任何访问修饰符时的默认状态。它只能被同一个包 (package) 中的类访问。
private (私有的):
适用范围: 方法、变量、构造器、内部类。
可见性: 权限最低。它只能在其所属的同一个类内部被访问。

二、 非控制修饰符 (Non-Access Modifiers)
非访问修饰符用于提供其他功能,例如实现继承、控制并发、管理内存等。

static (静态的):
适用范围:变量(类变量)、方法(类方法)、内部类、代码块。
功能:
变量/方法:使其归属于类本身,而不是类的实例(对象)。可以通过类名直接调用,无需创建对象。
代码块:静态代码块,在类加载时执行一次。
内部类:静态内部类。

final (最终的):
适用范围:类、方法、变量。
功能:
类:不能被继承(例如 String 类)。
方法:不能被子类重写 (override)。
变量:只能被赋值一次(常量)。如果是基本类型,值不能改;如果是引用类型,引用地址不能改(但对象内部的状态可以改)。

abstract (抽象的):
适用范围:类、方法。
功能:
类:抽象类。不能被实例化(不能 new),必须被子类继承。
方法:抽象方法。只有方法声明,没有方法体(以分号结尾)。包含抽象方法的类必须声明为抽象类。

synchronized (同步的):
适用范围:方法、代码块。
功能:用于多线程环境。确保同一时间只有一个线程可以执行被修饰的方法或代码块,防止并发问题。

volatile (易变的)
适用范围:变量。
功能:主要用于多线程。它保证了变量的可见性(一个线程修改了值,其他线程能立刻看到最新值)并禁止指令重排序(但不保证原子性)。

transient (短暂的):
适用范围:变量(成员变量)。
功能:在对象序列化(Serialization)时,被 transient 修饰的变量将被忽略,不会被包含在序列化的数据中。

native (本地的)
适用范围:方法。
功能:声明一个本地方法。该方法由非 Java 语言(如 C 或 C++)实现,Java 只提供一个声明(类似于抽象方法,没有方法体)。

strictfp (严格浮点,不常用):
适用范围:类、接口、方法。
功能:(Strict Floating-Point) 确保浮点数运算在所有平台上的结果都完全一致,遵循 IEEE 754 标准,防止因硬件差异导致浮点计算结果不同。

总结:修饰符的使用组合
修饰类: public, default, final, abstract, strictfp
修饰方法: public, protected, default, private, static, final, abstract, synchronized, native, strictfp
修饰变量: public, protected, default, private, static, final, volatile, transient
修饰构造器: public, protected, default, private

http://www.hskmm.com/?act=detail&tid=36874

相关文章:

  • CF2078D Scammy Game Ad
  • [树状数组]P11855 [CSP-J2022 山东] 部署 题解
  • C#/.NET/.NET Core技术前沿周刊 | 第 58 期(2025年10.13-10.19)
  • 行列式+矩阵树定理
  • 测试金字塔与测试左移:提升软件质量的双翼策略
  • 兼职MOer的幸福生活
  • 20232323 2025-2026-1《网络与系统攻防技术》实验二实验报告
  • 完整教程:阿里云上CentOS6.9(停止维护)导致的yum下载chrony失败如何解决?
  • LGP5494 [LG TPLT] 线段树分裂 学习笔记
  • 股票操作统计分析报告 - 2025-10-22
  • 随笔测试
  • 文档智能信息抽取技术在金融财税领域的应用研究与发展前景
  • 今日策略:年化436%,回撤7%,夏普比5.28, deap因子挖掘重构,附python代码 - 详解
  • 51单片机实践之数码管电子时钟/时间呈现及其设置
  • vue2:v-if和v-show的区别以及造成的影响
  • P6845 题解
  • LGP3694 邦邦的大合唱站队 学习笔记
  • 2025.10.22学习记录
  • 衡量效率,质量,运维的效率指标
  • LeeCode_101对称二叉树
  • TRAE 设计团队如何玩转 Vibe Coding(上)|高美感页面生成篇
  • LeeCode_226反转二叉树
  • 2025多校冲刺CSP模拟赛7 总结
  • 详细介绍:wpf之 Popup
  • 结对项目-生成四则运算
  • ? #4
  • CSS3 超实用属性:pointer-events (可穿透图层的鼠标事件)
  • 类和对象
  • 取证-windbg和dmp,以及文件分析基本流程
  • 【比赛记录】2025CSP+NOIP 冲刺模拟赛合集Ⅱ