#️⃣ شرح C#

تعدّد الأشكال (Polymorphism)

التجاوز (virtual / override)

الأب يعلّم الدالة virtual، والابن يعيد تعريفها بـ override:

class Animal
{
    public virtual void Sound() => Console.WriteLine("صوت");
}

class Cat : Animal
{
    public override void Sound() => Console.WriteLine("مواء");
}

class Dog : Animal
{
    public override void Sound() => Console.WriteLine("نباح");
}

الربط الديناميكي

Animal[] animals = { new Cat(), new Dog() };
foreach (Animal a in animals)
    a.Sound();   // مواء ثم نباح — حسب النوع الفعلي

التحميل (Overloading)

نفس الاسم بمعاملات مختلفة:

int Add(int a, int b) => a + b;
double Add(double a, double b) => a + b;
int Add(int a, int b, int c) => a + b + c;

base من داخل override

public override void Sound()
{
    base.Sound();   // استدعاء نسخة الأب
    Console.WriteLine("إضافة");
}

الفرق

النوعمتى
Overridingبين أب وابن، virtual/override
Overloadingداخل صنف، نفس الاسم بمعاملات مختلفة

🎯 التالي: التجريد والواجهات.