Access modifiers in java - explain.
Access modifiers specifies who can access them. There are four access modifiers used in java. They are public, private, protected, no modifer (declaring without an access modifer). Using ‘no modifier’ is also sometimes referred as ‘default’ or ‘friendly’ access. Usage of these access modifiers is restricted to two levels. The two levels are class level access modifier and member level access modifier.
I) Class level access modifiers (java classes only)
Only two access modifiers is allowed, public and no modifier
- If a class is ‘public’, then it CAN be accessed from ANYWHERE.
- If a class has ‘no modifer’, then it CAN ONLY be accessed from ’same package’.
II) Member level access modifiers (java variables and java methods)
All the four public, private, protected and no modifer is allowed.
- public and no modifier - the same way as used in class level.
- private - members CAN ONLY access.
- protected - CAN be accessed from ’same package’ and a subclass existing in any package can access.
For better understanding, member level access is formulated as a table:
| Access Modifier | Same Class | Same Package | Subclass | Other packages |
| public | Y | Y | Y | Y |
| protected | Y | Y | Y | N |
| no modifier | Y | Y | N | N |
| private | Y | N | N | N |
First row {public Y Y Y Y} should be interpreted as:
- Y - A member declared as ‘public’ CAN be accessed by the members of the ’same class’.
- Y - A member declared as ‘public’ CAN be accessed by the members of the ’same package’.
- Y - A member declared as ‘public’ CAN be accessed by the members of the ’subclass’.
- Y - A member declared as ‘public’ CAN be accessed from ‘Other packages’.
Second row {protected Y Y Y N} should be interpreted as:
- Y - A member declared as ‘protected’ CAN be accessed by the members of the ’same class’.
- Y - A member declared as ‘protected’ CAN be accessed by the members of the ’same package’.
- Y - A member declared as ‘protected’ CAN be accessed by the members of the ’subclass’.
- N - A member declared as ‘protected’ CANNOT be accessed by the members of the ‘Other package’.
similarly interpret the access modifier table for the third (no modifier) and fourth (private modifier) records.
FAQ Category: Core Java
