OOP · Core Java OOP Features
Access Modifiers
Why Do We Need Access Modifiers?
Real-World Problem
Imagine an ATM System. Customers should not directly access or modify their account balance or PIN. Only authorized operations should be allowed. Why Do We Need Access Modifiers? Access modifiers protect data by controlling the visibility of classes, variables, methods, and constructors. What are Access Modifiers?
Access Modifiers define the accessibility of class members within a program.

Types of Access Modifiers
public Accessible from anywhere.
private Accessible only within the same class.
protected Accessible within the same package and by subclasses.
default Accessible only within the same package.

Modifiers control who can see a member: private < default < protected < public.
public class Account {
private double balance; // only this class
protected String owner; // this class + subclasses + same package
String branch; // package-private (no modifier)
public String currency; // everyone
public double getBalance() { // public gateway to a private field
return balance;
}
}