修饰符用来定义类、方法或变量。
-
访问修饰符
default:同一包内可见。接口中的变量都隐式声明为public static final,接口的方法都默认访问权限为public。
private:同一类内可见。不能修饰类和接口。
public:所有类可见
protected:同一包内的类和所有子类可见。不可修饰除内部类之外的类和接口。 - 非访问修饰符
static:修饰静态变量和静态方法(或称类变量和类方法),这种变量和方法独立于对象。在类加载时首先被加载。
final:可用于修饰变量、方法和类。1.被final修饰的实例变量必须显示指定初始值。通常和static一起用来创建常量。2.final方法可以被子类继承,但是不能被子类修改。3.final类不可以被继承。
abstract:用于修饰抽象类和抽象方法。一个类不能同时被abstract和final同时修饰。如果一个类包含了抽象方法,必须被修饰为抽象类。任何继承了抽象类的子类必须实现抽象方法,除非该子类也是抽象类。抽象方法的结尾以分号结束。 - synchronized:被该关键字声明的方法同一时间只能被一个线程访问。可与四个访问修饰符一起用。
transient:序列化的对象包含被transient修饰的实例变量时,JVM跳过该变量。用来预处理类和变量的数据类型。 - volatile:被volatile修饰的变量在每次被线程访问时,强制从共享内存中重新读取该成员变量的值,并且当该变量的值发生变化时,强制回写到共享内存中。多个线程对该变量总是看到同一个值。