Polymorphism
Written and reviewed by Gagan Bhardwaj · Senior IT Faculty · 15+ years’ experience
What is Polymorphism?
Polymorphism means "many forms". In Java it lets one method name behave differently depending on the object or the arguments. It is one of the four pillars of OOP and makes code flexible and extensible.
Poly = many, morph = forms. The same action (e.g. draw()) takes many forms for different shapes.
Two Types of Polymorphism
| Type | Also called | How |
|---|---|---|
| Compile-time | Method Overloading | Same method name, different parameters — resolved by the compiler. |
| Runtime | Method Overriding | Child class redefines a parent method — resolved at runtime. |
1) Overloading (compile-time)
class Calc { int add(int a, int b) { return a + b; } double add(double a, double b) { return a + b; } // same name, different types }
add(2,3) → 5 add(2.5,1.5) → 4.0
2) Overriding (runtime)
class Animal { void sound() { System.out.println("Some sound"); } } class Cat extends Animal { void sound() { System.out.println("Meow"); } // overrides parent } Animal a = new Cat(); a.sound(); // runtime picks Cat's version
Meow
Why It's Useful
- Write general code (e.g.
Animal a) that works for many specific types. - Add new subclasses without changing existing code.
- Cleaner APIs — one method name instead of many.
Overloading = same class, different parameters (compile-time). Overriding = parent & child, same signature (runtime). Don't confuse the two.
Summary
- Polymorphism = one name, many forms.
- Compile-time (overloading) and runtime (overriding).
- Makes code flexible, reusable and easy to extend.
Polymorphism क्या है?
Polymorphism का मतलब है "कई रूप"। Java में यह एक ही method नाम को object या arguments के हिसाब से अलग व्यवहार करने देता है। यह OOP के चार स्तंभों में से एक है और code को flexible बनाता है।
Poly = कई, morph = रूप। एक ही action (जैसे draw()) अलग-अलग shapes के लिए कई रूप लेता है।
Polymorphism के दो प्रकार
| प्रकार | दूसरा नाम | कैसे |
|---|---|---|
| Compile-time | Method Overloading | एक ही नाम, अलग parameters — compiler तय करता है। |
| Runtime | Method Overriding | Child class parent method दोबारा define करे — runtime पर तय। |
1) Overloading
int add(int a, int b) { return a + b; } double add(double a, double b) { return a + b; }
add(2,3) → 5 add(2.5,1.5) → 4.0
2) Overriding
class Cat extends Animal { void sound() { System.out.println("Meow"); } } Animal a = new Cat(); a.sound();
Meow
क्यों उपयोगी है
- General code लिखें जो कई specific types के लिए काम करे।
- नई subclasses जोड़ें बिना पुराना code बदले।
- साफ़ APIs — एक नाम, कई काम।
Overloading = एक ही class, अलग parameters (compile-time)। Overriding = parent और child, एक ही signature (runtime)।
सारांश
- Polymorphism = एक नाम, कई रूप।
- Compile-time (overloading) और runtime (overriding)।
- Code को flexible, reusable और extend करने में आसान बनाता है।