Java 修饰符详解

Java 修饰符详解

Java 修饰符详解

在 Java 中,修饰符(Modifiers)用于控制类、方法、变量或其他成员的行为和访问权限。它们可以分为两类:访问修饰符和非访问修饰符。以下是 Java 修饰符的详细介绍:

一、访问修饰符(Access Modifiers)

用于控制成员的访问范围,共有 4 种级别:

public

访问权限:无限制,所有类均可访问。

示例:

public class MyClass {

public int publicVar;

public void publicMethod() { /* ... */ }

}

protected

访问权限:同一包内的类和所有子类(无论是否在同一包内)。

示例:

protected double protectedVar;

protected void protectedMethod() { /* ... */ }

默认(无修饰符)

访问权限:同一包内的类可访问(也称为 “包私有”)。

示例:

String defaultVar; // 默认访问修饰符

void defaultMethod() { /* ... */ }

private

访问权限:仅当前类可访问。

示例:

private int privateVar;

private void privateMethod() { /* ... */ }

访问修饰符总结表:

修饰符同一类同一包子类(同包)子类(不同包)其他包

public

protected

默认

private

二、非访问修饰符(Non-Access Modifiers)

用于改变类、方法或变量的功能特性:

1. static

作用:属于类,而非实例。

特点:

静态变量(类变量):所有实例共享同一个副本。

静态方法:可直接通过类名调用,不能使用this或访问非静态成员。

示例:

public class MyClass {

static int count = 0; // 静态变量

public static void increment() {

count++; // 静态方法访问静态变量

}

}

2. final

作用:不可变。

应用场景:

变量:赋值后不可修改(常量)。

方法:禁止被子类重写。

类:禁止被继承。

示例:

final double PI = 3.14; // 常量

public final void show() { /* ... */ } // 不可重写的方法

public final class FinalClass { /* ... */ } // 不可继承的类

3. abstract

作用:声明抽象类或方法。

特点:

抽象类:不能实例化,需被继承。

抽象方法:只有声明,没有实现,子类必须重写。

示例:

public abstract class Animal {

public abstract void sound(); // 抽象方法

}

public class Dog extends Animal {

@Override

public void sound() {

System.out.println("汪汪");

}

}

4. synchronized

作用:用于方法或代码块,保证同一时间只有一个线程访问。

示例:

public synchronized void add(int value) {

// 线程安全的方法

}

5. volatile

作用:确保变量在多线程中的可见性(每次读取都从主内存获取最新值)。

示例:

private volatile boolean running = true;

6. transient

作用:用于序列化时忽略某些字段。

示例:

private transient String password; // 序列化时会被忽略

7. native

作用:声明由本地代码(如 C/C++)实现的方法。

示例:

public native void display(); // 本地方法

三、修饰符使用规则

类修饰符:

外部类:只能用public、默认、abstract、final。

内部类:可以使用所有修饰符。

方法修饰符:

不能同时使用abstract和final(矛盾)。

不能同时使用abstract和static(静态方法需有实现)。

变量修饰符:

final变量必须显式初始化。

static final常用于定义常量(如public static final int MAX = 100)。

四、示例代码

public class ModifierExample {

private static int counter = 0; // 静态私有变量

protected final String NAME; // 常量,必须在构造函数中初始化

public ModifierExample(String name) {

this.NAME = name;

}

public static void increment() {

counter++;

}

public abstract void display(); // 抽象方法(需在子类中实现)

public synchronized void update() {

// 线程安全的方法

}

}

五、总结

访问修饰符控制可见性,public最开放,private最严格。

非访问修饰符增强功能,如static、final、abstract等。

合理使用修饰符可提高代码的安全性、可维护性和性能。

掌握修饰符是 Java 编程的基础,它们在封装、继承、多态等面向对象特性中起着关键作用。

posted on

2025-06-16 10:39

coding博客

阅读(170)

评论(0)

收藏

举报

相关推荐

狎戏的解释
betvip5365

狎戏的解释

📅 08-26 👁️ 2527
任天堂为Switch2供货不足正式致歉:承认严重低估首发需求
Ghost超详细图文教程 – 克隆备份系统全程图解
正规beat365旧版

Ghost超详细图文教程 – 克隆备份系统全程图解

📅 07-09 👁️ 8156