شرح صفوف ومحتوى الفقرة
يعني تعدد الأشكال أن تشترك الأصناف الفرعية المختلفة في واجهة دالة موحدة — مثل area() أو send() — بينما ينفذ كل صنف معادلته المتخصصة. بذلك يمر الكود المستدعي على العناصر في حلقة نظيفة دون فروع شرطية معقدة، كما يرجع التعبير obj instanceof Parent القيمة true لكل نسخة فرعية على طول سلسلة الوراثة.
في المشاريع العملية يُنصح بإبقاء شجرة الوراثة ضحلة (مستوى أو مستويين) وتفضيل التركيب عندما لا تجمع الأصناف علاقة انتماء حقيقية.
class Shape { area() { return 0; } }
class Square extends Shape {
constructor(s) { super(); this.s = s; }
area() { return this.s * this.s; }
}
const sq = new Square(6);
const checks =
`${sq instanceof Square} / ${sq instanceof Shape}`;
document.getElementById('poly-out').textContent =
`Area: ${sq.area()} | Square/Shape: ${checks}`;
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
تعلمت في هذا الدرس اشتقاق الأصناف الفرعية بالكلمة extends، وتهيئة باني الأب أولاً عبر super(...)، وتخصيص وتوسعة الدوال الموروثة عبر super.method()، واحترام حدود الحقول الخاصة، وتوظيف تعدد الأشكال وفحص instanceof. الخطوة التالية: انتقل إلى درس «الدوال والخصائص الساكنة في الأصناف» لبناء دوال مساعدة ومصانع إنشاء وحقول مشتركة تابعة للصنف مباشرةً.