شرح Java

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

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

نفس الواجهة، سلوك مختلف حسب النوع الفعلي — "أشكال متعدّدة".

التجاوز (Overriding)

صنف وارث يعيد تعريف دالة من الأب:

public class Animal {
  void sound() { System.out.println("صوت"); }
}

public class Cat extends Animal {
  @Override
  void sound() { System.out.println("مواء"); }
}

public class Dog extends Animal {
  @Override
  void sound() { System.out.println("نباح"); }
}

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

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

💡 @Override تأكيد للمترجم أنك تتجاوز دالة موجودة فعلًا — يكشف الأخطاء الإملائية.

التحميل (Overloading)

نفس اسم الدالة بمعاملات مختلفة داخل صنف واحد:

int add(int a, int b) { return a + b; }
double add(double a, double b) { return a + b; }
int add(int a, int b, int c) { return a + b + c; }

الفرق

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

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