Access Modifiers
In short: Access modifiers determine from where classes, methods and attributes may be accessed.
In more detail: Java has four levels: public, protected, package-private (no keyword) and private.
In Depth
| Modifier | Class | Package | Subclass | Everywhere |
|---|---|---|---|---|
| public | yes | yes | yes | yes |
| protected | yes | yes | yes | no |
| (none) | yes | yes | no | no |
| private | yes | no | no | no |
Why?
They ensure encapsulation: data should only be changed through controlled methods (getters and setters).
See getter, setter, abstraction.