چندریختی (Polymorphism) در C#

چندریختی یکی از اصول مهم برنامه‌نویسی شیءگرا است که به ما اجازه می‌دهد یک رفتار واحد را در شکل‌های مختلف پیاده‌سازی کنیم.

Polymorphism چیست؟

Polymorphism یعنی یک متد یا رفتار بتواند در کلاس‌های مختلف خروجی متفاوت داشته باشد. این مفهوم معمولاً همراه با inheritance استفاده می‌شود.

Overriding (بازنویسی متد)


public class Animal
{
    public virtual void MakeSound()
    {
        Console.WriteLine("Some sound");
    }
}

public class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Bark");
    }
}

public class Cat : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Meow");
    }
}

استفاده از Polymorphism


Animal a1 = new Dog();
Animal a2 = new Cat();

a1.MakeSound(); // Bark
a2.MakeSound(); // Meow

Overloading (بارگذاری متد)

در Overloading، متدها نام یکسان دارند ولی پارامترهای متفاوت دارند.


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

    public int Add(int a, int b, int c)
    {
        return a + b + c;
    }
}

چرا Polymorphism مهم است؟

  • افزایش انعطاف‌پذیری کد
  • کاهش وابستگی بین کلاس‌ها
  • قابلیت توسعه بهتر
  • پشتیبانی از طراحی‌های تمیزتر (Clean Architecture)

مثال واقعی در پروژه


public abstract class Payment
{
    public abstract void Pay();
}

public class CreditCardPayment : Payment
{
    public override void Pay()
    {
        Console.WriteLine("Pay by credit card");
    }
}

public class PaypalPayment : Payment
{
    public override void Pay()
    {
        Console.WriteLine("Pay by PayPal");
    }
}

جمع‌بندی

Polymorphism یکی از پایه‌های اصلی OOP است که باعث می‌شود کد انعطاف‌پذیرتر، قابل توسعه‌تر و حرفه‌ای‌تر باشد.