# modifier

* Modifier: Use like an adjective.

Adding extra(additional) meaning in front of class and class members(class members or methods)

* access modifier : _public_, _protected_, (default), _private_ // one of them.
* else : _static_, _final_, _abstract_, _native_, _transient_, _synchronized_, _volatiole_, _strictfp_//possible to have multiple

1. **static**

| modifier                        | subject         | meaning                                                                                                                                                                              |
| ------------------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **static : (class of, common)** | member variable | <ul><li>common class variable for all instances(=object)</li><li>available without creating instance</li><li>being created when class is loaded on memory</li></ul>                  |
|                                 | method          | <ul><li>available to call static method without creating instance</li><li>CANNOT use instance members(iv, im) within satic method because instance members might not exist</li></ul> |

2\. **final**

| modifier                              | subject         | meaning                                      |
| ------------------------------------- | --------------- | -------------------------------------------- |
| final : non-changable, non-expandable | class           | CANNOT be parent                             |
|                                       | method          | non-changable method.=>CANNOT be overriding. |
|                                       | member variable | non-changable, just being constant.          |
|                                       | local variable  | non-changable, just being constant.          |

3\. abstract

\=> CANNOT create instance(object) because it is not completed.

\=> Can create instance via inheritance completing implementation of abstract method(class).

| modifier                                     | subject | meaning                                                   |
| -------------------------------------------- | ------- | --------------------------------------------------------- |
| abstract : literally abstract, not completed | class   | There is abstract method in class                         |
|                                              | method  | There is only declaration and no implementation contents. |
