Java Modifier Summary
| Modifier | Used on | Meaning |
| abstract | class
interface method |
Contains unimplemented methods and cannot be instantiated.
All interfaces are abstract. Optional in declarations No body, only signature. The enclosing class is abstract |
| final | class
method field variable |
Cannot be subclassed
Cannot be overridden and dynamically looked up Cannot change its value. static final fields are compile-time constants. Cannot change its value. |
| native | method | Platform-dependent. No body, only signature |
| none(package) | class
interface member |
Accessible only in its package
Accessible only in its package Accessible only in its package |
| private | member | Accessible only in its class(which defines it). |
| protected | member | Accessible only within its package and its subclasses |
| public | class
interface member |
Accessible anywhere
Accessible anywhere Accessible anywhere its class is. |
| strictfp | class
method |
All methods in the class are implicitly strictfp.
All floating-point computation done is strictly conforms to the IEEE 754 standard. All values including intermediate results must be expressed as IEEE float or double values. It is rarely used. |
| static | class
method field initializer |
Make an inner class top-level class
A class method, invoked through the class name. A class field, invoked through the class name one instance, regardless of class instances created. Run when the class is loaded, rather than when an instance is created. |
| synchronized | method | For a static method, a lock for the class is acquired before
executing the method. For a non-static method, a lock for the specific object instance is acquired. |
| transient | field | Not be serialized with the object, used with object serializations. |
| volatile | field | Accessible by unsynchronized threads, very rarely used. |
All Possible Combinations of Features and Modifiers
| Modifier | Class | Variable | Method | Constructor | Free-Floating Block |
| public | yes | yes | yes | yes | no |
| protected | no | yes | yes | yes | no |
| none or package or default | yes | yes | yes | yes | yes |
| private | no | yes | yes | yes | no |
| final | yes | yes | yes | no | no |
| abstract | yes | no | yes | no | no |
| static | no | yes | yes | no | yes |
| native | no | no | yes | no | no |
| transient | no | yes | no | no | no |
| volatile | no | yes | no | no | no |
| synchronized | no | no | yes | no | yes |
| strictfp | yes | no | yes | yes | no |