Access modifiers control who can access classes, fields, methods, and constructors.
Java Access Levels
publicprotected- default/package-private
private
Visibility Table
| Modifier | Same Class | Same Package | Child Different Package | Other Classes |
|---|---|---|---|---|
| public | Yes | Yes | Yes | Yes |
| protected | Yes | Yes | Yes | No |
| default | Yes | Yes | No | No |
| private | Yes | No | No | No |
public
Accessible from anywhere.
private
Accessible only inside the same class. This is the most restrictive and is commonly used for encapsulation.
class BankAccount {
private double balance;
}
protected
Accessible within the same package and by child classes, even in different packages.
Useful when designing inheritance hierarchies.
default
If no modifier is written, the member is package-private. It is accessible only inside the same package.
Interview Notes
privateis most restrictive.publicis least restrictive.- Default means package-private.
privatehelps enforce encapsulation.protectedis usually used when subclasses need access.