(Based on your video content)
๐ Introduction
In Object-Oriented Programming (OOP), one of the most important concepts is:
๐ Encapsulation
Encapsulation helps you:
- Protect your data
- Control access to variables
- Write safer and more reliable code
In this article, we will understand encapsulation with simple examples and practical code.
โ The Problem: Direct Access to Data
In earlier programs, we used code like:
s1.name = "Alice";
s1.age = 20;
๐ This means:
- Anyone can directly change your data
- No control over values
๐จ What Can Go Wrong?
s1.marks = -500;
๐ This is invalid data, but Java allows it if variables are public.
โ ๏ธ Issues with Public Variables
- No validation
- Anyone can modify data
- Data becomes unsafe
- Bugs become hard to trace
- Security is compromised
โ Solution: Encapsulation
๐ Encapsulation means:
- Wrapping data + methods into one unit
- Restricting direct access to data
- Allowing access only through controlled methods
๐ง Definition
Encapsulation is:
๐ Data hiding + controlled access
๐ Step 1: Make Variables Private
class Student {
private String name;
private int age;
private int marks;
}
๐ก What Happens?
- Variables are hidden
- Cannot be accessed directly
s1.marks = 90; // โ ERROR
๐ Step 2: Use Getters and Setters
๐งฉ What are Getters?
- Used to read data
public int getMarks() {
return marks;
}
๐งฉ What are Setters?
- Used to update data
public void setMarks(int m) {
marks = m;
}
๐ Adding Validation (Very Important)
public void setMarks(int m) {
if (m >= 0 && m <= 100) {
marks = m;
}
}
๐ก Why This Matters?
- Prevents invalid values
- Protects object data
๐ Example:
s1.setMarks(-500); // โ Ignored
s1.setMarks(80); // โ๏ธ Accepted
๐๏ธ Complete Example
๐ Student Class
class Student {
private String name;
private int age;
private int marks; // Setter Methods
public void setName(String n) {
name = n;
} public void setAge(int a) {
age = a;
} public void setMarks(int m) {
if (m >= 0 && m <= 100) {
marks = m;
}
} // Getter Methods
public String getName() {
return name;
} public int getAge() {
return age;
} public int getMarks() {
return marks;
}
}
๐ฅ๏ธ Main Class
class Main {
public static void main(String[] args) { Student s1 = new Student(); s1.setName("Ajay");
s1.setAge(25);
s1.setMarks(80); System.out.println(s1.getMarks());
}
}
๐จ๏ธ Output
80
๐ Before vs After Encapsulation
| Without Encapsulation | With Encapsulation |
|---|---|
| Direct access โ | Controlled access โ๏ธ |
| No validation โ | Validation โ๏ธ |
| Unsafe data โ | Safe data โ๏ธ |
| Hard to debug โ | Easy to manage โ๏ธ |
โ ๏ธ Common Mistakes
โ No Validation in Setter
public void setMarks(int m) {
marks = m; // โ unsafe
}
โ Making Variables Public
public int marks; // โ wrong approach
โ Changing Data Directly
s1.marks = -10; // โ not allowed
๐ฅ Key Takeaways
- Encapsulation = Data hiding + controlled access
- Use
privatevariables - Use
gettersandsetters - Always validate input
- Prevent invalid data
๐ง Final Insight
๐ Without encapsulation:
- Data = unsafe โ
๐ With encapsulation:
- Data = protected, controlled, reliable โ