Modifiers are used on classes and class members (constructors, methods , data, and class-level blocks), but the final modifier can also be used on local variables in a method. A modifier that can be applied to a class is called a class modifier . A modifier that can be applied to a method is called a method modifier . A modifier that can be applied to a data field is called a data modifier . A modifier that can be applied to a class-level block is called a block modifier . The following table gives a summary of the Java modifiers.
| Modifier | class | constructor | method | data | block | Explanation |
|---|---|---|---|---|---|---|
| (default) [*] | | | | | | A class, constructor, method, or data field is visible in this package. |
| public | | | | | A class, constructor, method, or data field is visible to all the programs in any package. | |
| private | | | | A constructor, method or data field is only visible in this class. | ||
| protected | | | | A constructor, method or data field is visible in this package and in subclasses of this class in any package. | ||
| static | | | | Define a class method, or a class data field or a static initialization block. | ||
| final | | | | A final class cannot be extended. A final method cannot be modified in a subclass. A final data field is a constant. | ||
| abstract | | | An abstract class must be extended. An abstract method must be implemented in a concrete subclass. | |||
| native | | A native method indicates that the method is implemented using a language other than Java. | ||||
| synchronized | | | Only one thread at a time can execute this method. | |||
| strictfp | | | Use strict floating-point calculations to guarantee that the evaluation result is the same on all JVMs. | |||
| transient | | Mark a nonserializable instance data field. |
[*] Default access has no modifier associated with it. For example: class Test {}