Polymorphism in Object-Oriented Programming

Polymorphism is one of the core concepts of Object-Oriented Programming (OOP). It allows objects of different types to be treated as instances of the same class through a shared interface. This improves code flexibility and reusability.

Why Use Polymorphism?

  • Code Reusability: Enables writing more generic and reusable code.
  • Flexibility: Allows objects to be used interchangeably while maintaining different implementations.
  • Simplifies Code Maintenance: Reduces the need for large conditional structures.

Types of Polymorphism

1. Compile-Time Polymorphism (Method Overloading)

Compile-time polymorphism occurs when multiple methods share the same name but differ in parameters.

Example:

class Calculator
{
    public int Add(int a, int b) => a + b;
    public double Add(double a, double b) => a + b;
}

var calc = new Calculator();
Console.WriteLine(calc.Add(5, 10)); // Calls int version
Console.WriteLine(calc.Add(5.5, 2.2)); // Calls double version

2. Runtime Polymorphism (Method Overriding)

Runtime polymorphism occurs when a derived class provides a specific implementation of a method that is already defined in the base class.

Example:

class Animal
{
    public virtual void Speak() => Console.WriteLine("Animal makes a sound");
}

class Dog : Animal
{
    public override void Speak() => Console.WriteLine("Dog barks");
}

Animal myAnimal = new Dog();
myAnimal.Speak(); // Calls Dog's Speak method

Conclusion

Polymorphism simplifies the development of scalable and maintainable applications by allowing objects to be used interchangeably while adhering to a common interface. It enhances code flexibility and promotes the use of reusable components.

In the next articles, we will explore other Object-Oriented Programming principles such as Encapsulation, Inheritance, and Abstraction using a consistent example structure.