Java修饰符概述
首先
Java的修饰符(modifiers)被用于修改类、方法或变量的行为。理解修饰符将有助于阅读和编写Java代码。本次将解释Java的主要修饰符及其使用示例。
访问修饰符
在Java中,有四种访问修饰符。
-
- public: 任何类都可以访问。
-
- private: 只有同一类内可以访问。
-
- protected: 只有同一包或子类可以访问。
- 默认(未指定):只有同一包内可以访问。
public class MyClass {
public int publicVar = 1;
private int privateVar = 2;
protected int protectedVar = 3;
int defaultVar = 4;
}
非访问修饰符
类修饰符
-
- 最终:无法创建子类。
抽象:无法实例化,必须具有一个或多个抽象方法。
strictfp:保证该类中的所有方法和内部类的浮点精度是确定的。
public final class MyFinalClass { }
public abstract class MyAbstractClass {
public abstract void myMethod();
}
public strictfp class MyStrictfpClass { }
方法修饰符 (Method Modifier)
-
- final: 禁止方法重载方法。
-
- static: 类方法而不是实例方法。
-
- abstract: 方法没有主体,需要在子类中重写。
-
- synchronized: 保证多个线程不能同时访问。
-
- native: 使用非Java语言编写的代码。
- strictfp: 保证方法中浮点精度固定。
public class MyClass {
public final void finalMethod() { }
public static void staticMethod() { }
public abstract void abstractMethod();
public synchronized void syncMethod() { }
public native void nativeMethod();
public strictfp void strictMethod() { }
}
字段(变量)修饰符
-
- 最终:值只能被设置一次,不能重新分配。
静态:将其作为属于类本身而不是实例的字段。
瞬态:在对象序列化时,此字段将被忽略。
易失:此字段始终从主内存中读取,并且在线程之间保证同步。
public class MyClass {
public final int finalVar = 1;
public static int staticVar = 2;
public transient int transientVar = 3;
public volatile int volatileVar = 4;
}