Dart Academy · درس

extends وتجاوز الطرق

شارك سلوك الفئة الأصلية وخصّصه

الدرس 1 من 413 خطوة

extends وتجاوز الطرق درس مجاني في Dart Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Dart Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Dart Academy 4 دروس في المجموع.

مشاركة السلوك

عندما تشترك فئتان في معظم سلوكهما، يمكنك كتابته مرة واحدة وإعادة استخدامه. تسمي Dart ذلك inheritance، وهو يجنبك النسخ واللصق. 🌱

الكلمة المفتاحية extends

تُجري الوراثة بكتابة extends بعد اسم الصنف. ويكون الصنف الجديد ابنًا يكتسب تلقائيًا حقول وطرائق الصنف الأب.

class Animal {}
class Dog extends Animal {}

الأب والابن

الصنف الذي ترث منه هو superclass (الأب). أما الصنف الجديد فهو subclass (الابن). فالـ Dog هو Animal، لكن ليس كل Animal هو Dog.

الأعضاء الموروثة

يحصل الابن فورًا على إمكانية استخدام الدوال العامة للأب كما لو كانت دواله الخاصة. وتكتب السلوك inherited مرة واحدة، فتستفيد منه كل الأصناف الفرعية.

class Animal {
  void breathe() => print('breathing');
}
class Dog extends Animal {}
// Dog().breathe() works

إضافة سلوك جديد

يمكن للصنف الفرعي أيضًا إضافة دواله الخاصة فوق ما يرثه. ويظل الابن Animal، لكنه يكتسب قدرات extra لم تكن لدى الأب.

class Dog extends Animal {
  void bark() => print('Woof!');
}

تجاوز دالة

أحيانًا تكون نسخة الأب غير مناسبة للابن. يتيح التجاوز للفئة الفرعية استبدال طريقة موروثة بتنفيذ خاص بها.

class Animal {
  void speak() => print('...');
}
class Cat extends Animal {
  void speak() => print('Meow');
}

الوسم @override

أضف التعليمة التوضيحية @override فوق الطريقة المستبدلة. فهي تخبر المحلل بالتحقق من أن الأب يحتوي فعلًا على تلك الطريقة، مما يساعد على اكتشاف الأخطاء الإملائية مبكرًا.

class Cat extends Animal {
  @override
  void speak() => print('Meow');
}

ضرورة تطابق التوقيع

يجب أن يحافظ التجاوز على الاسم نفسه وعلى توقيع متوافق. إذا غيّرت المعاملات أو نوع القيمة المُعادة بلا عناية، فسيرفض Dart ذلك.

إعادة استخدام نسخة الأب

يمكنك داخل التجاوز استدعاء النسخة الأصلية عبر super، ثم إضافة خطواتك الخاصة حولها. وهكذا توسّع السلوك بدلًا من التخلص منه.

@override
void speak() {
  super.speak();
  print('and purrs');
}

تعدد الأشكال عمليًا

خزّن الكائنات الابنة في متغير من نوع Animal واستدعِ speak؛ إذ ينفذ كل كائن نسخته الخاصة. هذا هو تعدد الأشكال، والفائدة الحقيقية من التجاوز.

Animal a = Cat();
a.speak(); // Meow

الوراثة الأحادية

يمكن لفئة Dart أن ترث من فئة أب واحدة فقط، وليس من فئتين أبدًا. وللمشاركة بين أشجار وراثة غير مرتبطة، ستلجأ لاحقًا إلى mixins.

تحقق سريع

لقد استبدلت طريقة موروثة في فئة فرعية. ماذا تفعل هذه العملية؟

مراجعة

استخدمت extends لوراثة أعضاء الأب، وأضفت طرقًا جديدة، وتجاوزت طرقًا أخرى باستخدام @override. هذا هو جوهر إعادة استخدام الفئات. 🎉

البدء مجانًا

تعلم Dart مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
30
الدروس
120

الأسئلة الشائعة

هل درس «extends وتجاوز الطرق» مجاني؟

نعم — نص درس «extends وتجاوز الطرق» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Dart Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Dart Academy 4 دروس في المجموع.

ماذا ستتعلم في «extends وتجاوز الطرق»؟

شارك سلوك الفئة الأصلية وخصّصه تتمرن على Dart Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Dart Academy؟

لا تُشترط خبرة سابقة. Dart Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «extends وتجاوز الطرق»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Dart Academy هذا؟

نعم. كل درس في Dart Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. extends وتجاوز الطرق
  2. استدعاء super وتسلسل البنّاءات
  3. Mixins باستخدام الكلمة المفتاحية with
  4. قيود on وترتيب Mixins
← العودة إلى Dart Academy