Inheritance Kya Hota Hai?
Inheritance ka matlab hota hai ek class doosri class ke features (properties aur methods) ko inherit karti hai. Ye ek "is-a" relationship hota hai.
Example:
Ek Car, ek Vehicle hai. Toh Car class Vehicle class se inherit kar sakti hai.
class Vehicle {
void start() {
System.out.println("Vehicle started");
}
}
class Car extends Vehicle {
void drive() {
System.out.println("Car is driving");
}
}
class Main {
public static void main(String[] args) {
Car c = new Car();
c.start(); // inherited method
c.drive(); // class-specific method
}
}
Composition Kya Hota Hai?
Composition ka matlab hai ek class doosri class ke object apne andar use karti hai. Isme "has-a" relationship hota hai.
Example:
Car ke paas Engine hota hai. So, Car "has-a" Engine.
class Engine {
void run() {
System.out.println("Engine is running");
}
}
class Car {
Engine engine = new Engine(); // Composition
void startCar() {
engine.run();
System.out.println("Car started with engine");
}
}
class Main {
public static void main(String[] args) {
Car car = new Car();
car.startCar();
}
}
Difference Between Composition & Inheritance (Normal Format)
Relationship Type:
Inheritance use karta hai "is-a" relationship, jaise Car is a Vehicle.
Composition use karta hai "has-a" relationship, jaise Car has an Engine.
Coupling (Dependency):
Inheritance mein child class parent class pe tightly dependent hoti hai.
Composition mein loose coupling hoti hai — components easily replace kiye ja sakte hain.
Flexibility:
Inheritance mein rigid structure hota hai — hierarchy fix hoti hai.
Composition mein zyada flexibility hoti hai — design modular rehta hai.
Code Reuse:
Inheritance directly parent class ke methods use karta hai.
Composition mein functionality reuse karne ke liye object ke through methods call kiye jaate hain.
Testing:
Inheritance based code test karna kabhi kabhi mushkil hota hai due to tight coupling.
Composition wala code easily testable hota hai kyunki objects independent hote hain.
Kab Kya Use Karna Chahiye?
Agar tumhari classes ke beech natural "is-a" relationship hai, jaise Dog is an Animal, toh Inheritance use karna sahi hoga.
Lekin agar tum flexible, maintainable aur loosely-coupled design chahte ho, jaise Car has an Engine, toh Composition use karna better hota hai.
Agar tum chahte ho ki ek class kuch basic functionality inherit kare but baaki sab customizable ho, tab bhi inheritance theek hai.
Lekin zyada testability, modularity aur future-proofing chahiye toh composition ko prefer karo.
Best Practice
Java ke experienced developers ek golden rule follow karte hain:
"Favor Composition over Inheritance"
Kyuki composition se:
- Tumhara code zyada flexible hota hai
- Reusability aur testability badhti hai
- Maintenance easy hoti hai
Final Thoughts
Inheritance aur composition dono important tools hain Java OOP ke toolbox mein. Samajhna zaroori hai ki kis situation mein kaunsa fit baithta hai.
- Inheritance gives shared structure and behavior
- Composition provides better control and modularity
Agar tum smart architect banna chahte ho toh dono ka balance sikhna zaroori hai.
Comments