الوراثة
الوراثة تتيح لك إنشاء صنف جديد يرث خصائص ودوال صنف موجود. استخدم الكلمة المفتاحية يرث لتحديد الصنف الأب.
التركيب الأساسي
sad
صنف حيوان
باني(اسم)
هذا.اسم = اسم
نهاية
دالة تحدث()
اطبع_سطر(هذا.اسم + " يتحدث")
نهاية
نهاية
صنف قطة يرث حيوان
باني(اسم)
الأساس(اسم) # استدعاء باني الأب
نهاية
دالة تحدث()
اطبع_سطر(هذا.اسم + ": مياو!")
نهاية
نهاية
متغير ق = جديد قطة("كيتي")
ق.تحدث() # كيتي: مياو!استدعاء الباني الأب (الأساس)
عند إنشاء صنف ابن، يجب استدعاء الأساس() في الباني لتمرير المعاملات للصنف الأب:
sad
صنف مركبة
باني(نوع، سرعة)
هذا.نوع = نوع
هذا.سرعة = سرعة
نهاية
نهاية
صنف سيارة يرث مركبة
باني(موديل، سرعة، عدد_الأبواب)
الأساس("سيارة"، سرعة)
هذا.موديل = موديل
هذا.عدد_الأبواب = عدد_الأبواب
نهاية
دالة وصف()
ارجع هذا.موديل + " - " + هذا.عدد_الأبواب + " أبواب"
نهاية
نهاية
متغير س = جديد سيارة("كامري"، 180، 4)
اطبع_سطر(س.وصف()) # كامري - 4 أبوابتجاوز الدوال (Override)
الصنف الابن يمكنه إعادة تعريف دوال الأب. الدالة الجديدة تحل محل القديمة:
sad
صنف شكل
دالة مساحة()
ارجع 0
نهاية
دالة وصف()
ارجع "شكل بمساحة " + هذا.مساحة()
نهاية
نهاية
صنف مربع يرث شكل
باني(ضلع)
هذا.ضلع = ضلع
نهاية
دالة مساحة()
ارجع هذا.ضلع ** 2
نهاية
نهاية
صنف دائرة يرث شكل
باني(نصف_قطر)
هذا.نصف_قطر = نصف_قطر
نهاية
دالة مساحة()
ارجع 3.14159 * هذا.نصف_قطر ** 2
نهاية
نهاية
متغير م = جديد مربع(5)
اطبع_سطر(م.وصف()) # شكل بمساحة 25
متغير د = جديد دائرة(3)
اطبع_سطر(د.وصف()) # شكل بمساحة 28.27431قواعد الوراثة
| القاعدة | الوصف |
|---|---|
| وراثة مفردة | كل صنف يرث من صنف أب واحد فقط |
يرث | الكلمة المفتاحية لتحديد الأب |
الأساس() | استدعاء باني الصنف الأب |
| تجاوز الدوال | الصنف الابن يمكنه إعادة تعريف دوال الأب |
| الوصول للخصائص | الابن يرث جميع الخصائص والدوال العامة |
نصيحة
إذا احتجت وراثة سلوك من عدة مصادر، استخدم السمات (Traits) بدلاً من الوراثة المتعددة.
- كلمة
يرثتحدد الصنف الأب الأساس(...)يستدعي باني الأب (يجب استدعاؤه في الباني المشتق)- يمكن تجاوز أي دالة من الأب بإعادة تعريفها
عام/محمي/خاصتتحكم في إمكانية الوصول من الأبناء