تخطَّ إلى المحتوى

🧩 شرح البرمجة كائنية التوجّه

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

الدرس 9 من 25· ⏱ 1 دقائق قراءة

ما هو تعدّد الأشكال؟

"أشكال متعدّدة": نفس الاستدعاء يعطي سلوكًا مختلفًا حسب نوع الكائن الفعلي.

class Animal:
    def sound(self):
        return "صوت"

class Dog(Animal):
    def sound(self):
        return "نباح"

class Cat(Animal):
    def sound(self):
        return "مواء"

# نفس الكود، سلوك مختلف
animals = [Dog(), Cat(), Animal()]
for a in animals:
    print(a.sound())   # نباح، مواء، صوت

الفائدة

تكتب كودًا يتعامل مع الأب، فيعمل تلقائيًّا مع كل الأبناء — حتى الجدد:

def describe(animal):
    print(animal.sound())   # يعمل مع أي نوع يرث Animal

في اللغات المنمّطة

// Java: قد تحتاج @Override، وأحيانًا virtual في C++
Animal a = new Dog();
a.sound();   // ينفّذ نسخة Dog

أنواع

  • تجاوز (Overriding): الابن يعيد تعريف طريقة الأب (هذا الدرس).
  • تحميل زائد (Overloading): نفس الاسم بمعاملات مختلفة (درس لاحق).

🎯 التالي: الواجهات (Interfaces).

هل كان هذا الدرس مفيدًا؟