在Java中,修饰符用于限定类、属性、方法的访问权限或特性,主要分为访问修饰符和非访问修饰符。以下是最常用的三类修饰符及其作用:
一、访问修饰符(控制访问范围)
1. public (公共修饰符)
- 作用:被修饰的成员(类、属性、方法)可在任何包、任何类中访问。
- 示例:
public class PublicClass {
public int publicField;
public void publicMethod() {}
}
2. private (私有修饰符)
- 作用:仅在当前类内部可访问,外部类无法直接调用(通常用于封装属性)。
- 示例:
class PrivateDemo {
private String privateName;
private void privateMethod() {}
}
3. protected (受保护修饰符)
- 作用:在同一包内或子类中可访问(跨包时仅子类能访问)。
- 示例:
package base;
public class ProtectedParent {
protected void protectedMethod() {}
}
package sub;
import base.ProtectedParent;
class ProtectedChild extends ProtectedParent {
public void callParentMethod() {
protectedMethod(); // 子类可跨包访问
}
}
二、非访问修饰符(控制行为或特性)
1. static (静态修饰符)
- 作用:修饰的成员(属性、方法)属于类本身,而非实例对象,可通过 类名.成员 直接访问。
- 特点:
- 静态属性:所有对象共享同一值,如 static int count = 0 。
- 静态方法:不能直接访问非静态成员,常用于工具类(如 Math.sqrt() )。
- 示例:
class StaticDemo {
static int staticCount;
static void staticMethod() {
System.out.println("静态方法:" + staticCount);
}
}
// 调用方式:StaticDemo.staticMethod();
2. final (最终修饰符)
- 作用:
- 修饰类:类不能被继承(如 String 类)。
- 修饰方法:方法不能被重写。
- 修饰变量:变量成为常量,值不可修改(如 final int PI = 3.14; )。
- 示例:
final class FinalClass { // 不可继承
final void finalMethod() {} // 不可重写
}
3. abstract (抽象修饰符)
- 作用:
- 修饰类:抽象类不能被实例化,需子类继承并实现其抽象方法。
- 修饰方法:抽象方法仅有声明,没有实现(需用 abstract 关键字声明)。
- 示例:
abstract class AbstractClass {
abstract void abstractMethod(); // 抽象方法
void normalMethod() {} // 普通方法
}
class ConcreteClass extends AbstractClass {
@Override
void abstractMethod() { // 必须实现抽象方法
System.out.println("实现抽象方法");
}
}
三、其他常见修饰符(补充)
- synchronized (同步修饰符):用于方法或代码块,确保多线程环境下的线程安全。
- transient (瞬态修饰符):修饰的属性在对象序列化时被忽略,不参与数据持久化。
- volatile (易变修饰符):保证多线程环境下变量的可见性,禁止指令重排序(常用于标记共享变量)。
总结
修饰符的核心作用是控制访问范围和定义成员特性,合理使用可提升代码的封装性、安全性和灵活性。例如:
- 用 private 封装属性,通过 public 方法暴露接口;
- 用 static 优化工具类方法的调用方式;
- 用 abstract 和 final 构建类的继承体系和限制扩展边界。
Java三个修饰符
最新推荐文章于 2025-12-02 21:20:38 发布
1577

被折叠的 条评论
为什么被折叠?



