Polymorphism in Java.

By Shakib Ansari | Date: Fri, Jun 6, 2025

Polymorphism Kya Hota Hai?

"Poly" means many + "morph" means forms

Polymorphism = ek action, lekin multiple ways mein perform karna.

Java mein do types ke polymorphism hote hain:

Compile-time: PolymorphismMethod OverloadingRuntime PolymorphismMethod Overriding

1. Method Overloading (Compile-Time Polymorphism)

Definition:

Jab ek class ke andar same method name ho, lekin different parameters hoon – usse kehte hain method overloading.

Example:

class Calculator {
    int add(int a, int b) {
        return a + b;
    }

    double add(double a, double b) {
        return a + b;
    }
}
class Main {
    public static void main(String[] args) {
        Calculator c = new Calculator();
        System.out.println(c.add(2, 3));        // 5
        System.out.println(c.add(2.5, 3.5));    // 6.0
    }
}

Key Points:

  • Same method name
  • Different parameter type, order, or number
  • Return type se overloading nahi hota (only parameter change matters)
  • Compile time pe decide hota hai kaunsa method chalega

2. Method Overriding (Runtime Polymorphism)

Definition:

Jab child class parent class ke method ko same name, return type, and parameters ke saath dubara define karti hai, usse kehte hain method overriding.

Example:

class Animal {
    void sound() {
        System.out.println("Animal makes sound");
    }
}

class Dog extends Animal {
    void sound() {
        System.out.println("Dog barks");
    }
}
class Main {
    public static void main(String[] args) {
        Animal a = new Dog(); // reference Animal, object Dog
        a.sound();  // Output: Dog barks
    }
}

Key Points:

  • Parent-child relation hona chahiye (Inheritance)
  • Same method signature
  • Runtime pe decide hota hai kaunsa method chalega (dynamic dispatch)

Difference Table – Overloading vs Overriding

1. Type:

  • Method overloading is an example of compile-time polymorphism, kyunki compiler hi decide karta hai kaunsa method chalega.
  • Method overriding is runtime polymorphism, kyunki method call run time pe resolve hota hai.

2. Class:

  • Overloading same class ke andar hoti hai.
  • Overriding mein parent-child relationship zaruri hota hai (inheritance).

3. Method Signature:

  • Overloading mein method signature (parameters) different hoti hai.
  • Overriding mein method signature same honi chahiye.

4. Return Type:

  • Overloading mein return type change ho sakta hai, lekin sirf return type change karke overloading nahi hoti.
  • Overriding mein return type same ya covariant (child class ka type) hona chahiye.

5. Access Modifier:

  • Overloading mein access modifier koi restriction nahi hoti.
  • Overriding mein child class ka method parent se zyada restrictive nahi ho sakta.

6. @Override Annotation:

  • Overloading mein @Override use nahi hota.
  • Overriding mein @Override use karna best practice hai – ye compiler ko batata hai ki method override ho raha hai

Real Life Example:

Method Overloading:

  • ATM machine → withdraw(int amount), withdraw(int amount, String mode)

Method Overriding:

  • Animal → sound()
  • Dog → sound() → Dog barks
  • Cat → sound() → Cat meows

Summary:

  • Overloading = same name, different parameters.
  • Overriding = same name, same parameters, but different class.
  • Overloading helps in functionality expansion, overriding helps in specific behavior definition.
About the Author

Hi, I'm Shakib Ansari, Founder and CEO of BeyondMan. I'm a highly adaptive developer who quickly learns new programming languages and delivers innovative solutions with passion and precision.

Shakib Ansari
Programming

Comments