Encapsulation is one of the four fundamental OOP principles (along with Inheritance, Polymorphism, and Abstraction). It refers to bundling data (variables) and methods (functions) that operate on that data into a single unit (class), while restricting direct access to some of the object's components.
Types of Encapsulation:
Java Access Modifiers - Simplified
1). private
Access Level: Only within the same class
Example:
private int salary; // Only accessible in this class
Use Case: Hide sensitive data (e.g., passwords, internal calculations).
2). default (No Modifier)
Access Level: Only within the same package
Example:
String department; // Accessible only in this package
3). protected
Access Level:
Same package +
Subclasses (even in different packages)
Example:
protected String projectName; // Accessible in package + child classes
4). public
Access Level: Everywhere (global access)
Example:
public String companyName = "TechCorp"; // Accessible by any class
Use Case: APIs, constants, or methods needed globally.
Note:
public static void main(String[] args) - //Method Signature
Access Specifier not for local variables
When to Use Which?
private: Hide internal implementation details.
default: Share code within a package only.
protected: Allow controlled inheritance.
public: Expose APIs/constants.
Example:
public class Employee {
private int id; // Only this class
String name; // Package-only (default)
protected String role; // Package + child classes
public static final String COMPANY = "TechCorp"; // Global
}
Class Example:
public class Google {
private int emp_salary;
public static String ho_address = "Mountain View";
public static boolean working = true;
private void get_user_details() {
int no = 10;
System.out.println("All Users Details");
}
public void search_Results() {
System.out.println("Searching Results");
}
}
public class User {
public static void main(String[] args) { //Method Signature
Google googleObj = new Google() ;
//System.out.println(googleObj.emp_salary);
System.out.println(Google.working);
System.out.println(Google.ho_address);
//googleObj.get_user_details();
googleObj.search_Results();
User.main();
}
public static void main(){
System.out.println("Overloaded Main Method");
}
}
Key Rules
Class-level: Only public or default (no private/protected).
Variables/Methods: All 4 modifiers allowed.
Security Tip: Start with private, widen access only when needed.
This ensures encapsulation while providing flexibility. 🚀
------------------------------- End of the Blog ----------------------------------