Java中的修饰符
访问控制修饰符
修饰符 | 当前类 | 当前包 | 子类 | 其他包 |
---|---|---|---|---|
public | 可访问 | 可访问 | 可访问 | 可访问 |
protected | 可访问 | 可访问 | 可访问 | 不可访问 |
default | 可访问 | 可访问 | 不可访问 | 不可访问 |
private | 可访问 | 不可访问 | 不可访问 | 不可访问 |
非访问修饰符
static修饰符
被static修饰的变量称为静态变量,即无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被称为类变量。局部变量不能被声明为 static 变量。
被static修饰的方法叫做静态方法,静态方法不能使用类的非静态变量,静态方法与普通方法的区别就是静态方法与类绑定在了一起。
final修饰符
被final修饰的变量一旦被赋值后就不能改变。
被final修饰的方法可以被子类继承,但是不能被类重写。
被final修饰的类不能被继承,一般用来实现某些特定的功能
abstract 修饰符
被abstract修饰的类称为抽象类,不能被实例化。
被abstract修饰的方法称为抽象方法,其具体的实现一般由子类提供。
如果一个类包含抽象方法,那这个类一定是抽象类。否则就会报错。
任何继承抽象类的子类必须实现父类的所有的抽象方法,除非子类也是一个抽象类。
synchronized 修饰符
被synchronized修饰的方法在同一时间只能被一个线程访问
transient 修饰符
序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。
该修饰符包含在定义变量的语句中,用来预处理类和变量的数据类型。
volatile 修饰符
volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
一个 volatile 对象引用可能是 null。