Is lesson me hum seekhenge:
- Polymorphism kya hota hai
- Method Overloading
- Method Overriding
- Compile-time polymorphism
- Run-time polymorphism
- Upcasting ka role polymorphism me
- Downcasting
Polymorphism ka matlab:
Ek hi cheez ka multiple forms me behave karna
Java me:
Ek method alag-alag situations me different behavior dikha sakta hai
Real life example:
Ek aadmi:
Student bhi ho sakta hai
Teacher bhi
Employee bhi
Same person → multiple roles
Java me polymorphism 2 tarah ka hota hai:
1. Compile-time Polymorphism
2. Run-time Polymorphism
Isse kehte hain:
Method Overloading
Yahan method ka decision compile time par hota hai.
Jab ek hi class me same method name ho lekin:
parameters different ho
Example:
class MathUtils {
int add(int a, int b){
return a + b;
}
int add(int a, int b, int c){
return a + b + c;
}
}Usage:
public class Test {
public static void main(String[] args){
MathUtils m = new MathUtils();
System.out.println(m.add(2,3));
System.out.println(m.add(2,3,4));
}
}Output
5
9
Isse kehte hain:
Method Overriding
Yahan decision run time par hota hai.
Jab child class parent class ke method ko same signature ke saath redefine kare.
Example:
class Animal {
void sound(){
System.out.println("Animal sound");
}
}
class Dog extends Animal {
void sound(){
System.out.println("Dog barks");
}
}public class Test {
public static void main(String[] args){
Animal a = new Dog(); // upcasting
a.sound(); // run-time decision
}
}Output
Dog barks
Yahan:
reference → Animal
object → Dog
Phir bhi Dog ka method call hua.
Isko kehte hain:
Dynamic Method Dispatch
| Feature | Compile-time | Run-time |
|---|---|---|
| Concept | Overloading | Overriding |
| Decision time | Compile time | Run time |
| Inheritance required | ❌ No | ✔ Yes |
| Performance | Fast | Slightly slow |
✔ Method name same hona chahiye
✔ Parameters same hone chahiye
✔ Return type same ya covariant hona chahiye
✔ Access modifier same ya more public hona chahiye
class Shape {
void draw(){
System.out.println("Drawing shape");
}
void draw(String color){
System.out.println("Drawing shape in " + color);
}
}
class Circle extends Shape {
@Override
void draw(){
System.out.println("Drawing circle");
}
}class Animal {
void sound(){
System.out.println("Animal sound");
}
}
class Dog extends Animal {
void sound(){
System.out.println("Dog barks");
}
}
class Cat extends Animal {
void sound(){
System.out.println("Cat meows");
}
}
public class Test {
public static void main(String[] args){
Animal[] animals = {
new Dog(),
new Cat()
};
for(Animal a : animals){
a.sound();
}
}
}Output
Dog barks
Cat meows
Use hota hai:
framework design
collections
dynamic behavior
clean architecture
Example:
List list = new ArrayList();
List list = new LinkedList();
Same reference → different implementation.
1️⃣ Polymorphism kya hota hai?
2️⃣ Compile-time aur run-time polymorphism me difference kya hai?
3️⃣ Method overloading aur overriding me difference kya hai?
4️⃣ Dynamic method dispatch kya hota hai?
5️⃣ Upcasting polymorphism me kaise help karta hai?
Is lesson me humne seekha:
✔ Polymorphism concept
✔ Compile-time polymorphism (Overloading)
✔ Run-time polymorphism (Overriding)
✔ Dynamic method dispatch
✔ Real-world usage
Polymorphism Java OOP ka sabse powerful feature hai jo flexible aur extensible code likhne me help karta hai.