Java修饰符
下表列出所有Java修饰符,并说明了各自能修饰的Java结构种类和作用
修饰符 | 用于 | 意义 |
---|---|---|
abstract | 类 接口 方法 | 这个类不能被实例化,而且可能包含未实现的方法 所有接口都是抽象的。声明接口时这个修饰符是可选的 这个方法没有主体,主体由子类提供。签名后面是一个分号。 所在的类必须也是抽象的。 |
default | 方法 | 这个接口方法的实现是可选的。接口为不想实现这个方法的类 提供了一个默认实现。 |
final | 类 方法 字段 变量 | 不能创建这个方法的子类 不能覆盖这个方法 这个字段的值不能改变。static final 修饰的字段是编译时常量 值不能改变的局部变量、方法参数或异常参数 |
native | 方法 | 这个方法使用某种与平台无关的方式实现(经常用C语言)没有提 供主体,签名后面是一个分号 |
无(包) | 类 接口 成员 | 没声明为public的类只能在包中访问 没声明为public的接口只能在包中访问 没声明为private、protected或public的成员具有包可见性, 只能在包中访问 |
private | 成员 | 这个成员只在定义它的类中可以访问 |
protected | 成员 | 这个成员只在定义它的包中和子类中可以访问 |
public | 类 接口 成员 | 能访问所在包的地方都可以访问这个类 能访问所在包的地方都可以访问这个接口 能访问所在类的地方都可以访问这个成员 |
strictfp | 类 方法 | 这个类的所有方法都隐式声明为strictfp 这个方法必须使用严格遵循IEEE 754标准的方法执行浮点运算。 具体而言,所有数值,包含中间结果,都要使用IEEE float或 double类型表示,而且不能利用本地平台浮点格式或硬件提供 的额外精度或取值范围。这个修饰符极少使用。 |
static | 类 方法 字段 初始化 程序 | 使用static声明的内部类是顶层类,而不是所在类的成员。 static方法是类方法。不隐式传入this对象引用。可通过类名调用 static字段是类字段。不管创建多少类实例,这个字段只有 一个实例,可通过类名访问。 这个初始化程序在类加载时运行,而不是创建实例时运行。 |
synchronized | 方法 | 这个方法对类或实例执行非原子操作,所以必须小心,确保不能 让两个线程同时修改类或实例。对于static方法而言,执行方法 之前先为类获取一个锁。对于非static方法而言,会为具体的对 象实例获取一个锁。 |
transient | 字段 | 这个字段不是对象持久化状态的一部分,因此不会随对象一起 序列化。在对象序列化时使用,参见 java.io.ObjectOutputStream |
volatile | 字段 | 这个字段能被异步线程访问,因此必须对其做些特定的优化。 这个修饰符有时可以代替synchronized |