Java 中的访问修饰符与非访问修饰符

Java 为我们提供了一套丰富的修饰符。我们可以利用它们来控制访问机制,同时向 JVM 传达关于类功能的信息。这些修饰符主要分为两大类,即:

!<a href="https://media.geeksforgeeks.org/wp-content/uploads/20260124151023639858/accessmodifiers.webp">accessmodifiers修饰符的分类

Java 中的访问修饰符用于控制程序中类、方法和变量的可见性与可访问性。通过定义成员可以被访问的范围,它们帮助我们实现封装并确保访问安全。具体包括以下几种:

1. public:

  • 可以从任何地方访问
  • 在不同的包或类之间没有限制

> public int count;

2. private:

  • 只能在同一个类内部访问
  • 通常用于实现封装

> private int salary;

3. default (包私有/Package-Private):

  • 不使用任何关键字
  • 只能在同一个包内访问
  • 无法从包外部访问(即使是子类也不行)

> int age; // 默认访问权限

4. protected:

可访问范围:

  • 在同一个包内
  • 在子类中,即使它们位于不同的包中
  • 与继承关系紧密相关

> protected String name;

!image访问修饰符的类型

在 Java 中,我们拥有 7 种非访问修饰符。我们可以将它们与类、方法、变量、构造器等结合使用,以便向 JVM 说明它们的行为特征。具体如下:

1. static

Java 中的 static 修饰符表示某个成员属于类本身,而不是属于某个特定的对象。类的所有实例共享同一个静态变量或方法,这让我们无需创建对象就能进行通用访问。

语法示例:

> static int count;

> static void display() { }

2. final

Java 中的 final 修饰符用于防止对其所修饰的元素进行修改。它可以用于变量(常量值)、方法(不可被重写)以及类(不可被继承)。

语法示例:

> final int MAX = 100;

> final void show() { }

> final class Vehicle { }

3. abstract

Java 中的 abstract 修饰符用于类和方法,以定义不完整的实现。抽象方法没有方法体,必须由子类来实现;而抽象类则不能直接被实例化。

语法示例:

> abstract class Shape {

>

> abstract void draw();

>

> }

4. synchronized

Java 中的 synchronized 修饰符主要用于多线程环境,以控制对临界区的访问。它能确保同一时间只有一个线程可以执行某个方法或代码块,从而防止竞态条件的发生。

语法示例:

> synchronized void update() { }

5. transient

Java 中的 transient 修饰符用于防止变量在对象被转换为字节流时被序列化。当我们需要排除敏感数据或非必要数据不参与序列化时,这就非常有用。

语法示例:

> transient int password;

6. volatile

Java 中的 volatile 关键字确保一个线程对变量的更新能立即被其他线程看到。它防止线程在本地缓存变量,从而保证所有线程都能获取到一致且最新的值。

语法示例:

> volatile boolean flag;

7. native

Java 中的 native 关键字用于声明一个方法,该方法的实现是由平台特定的代码(通常是 C 或 C++)提供的。它允许 Java 程序通过 JNI(Java Native Interface)与非 Java 库进行交互。

语法示例:

> native void loadLibrary();

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/21226.html
点赞
0.00 平均评分 (0% 分数) - 0