الواجهات الضمنية وimplements
تعامل مع أي فئة باعتبارها واجهة
الواجهات الضمنية وimplements درس مجاني في Dart Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Dart Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Dart Academy 4 دروس في المجموع.
كل فئة هي Interface
في Dart، تعرّف كل فئة ضمنيًا واجهة ضمنية: وهي المجموعة الكاملة من طرقها وgetters العامة التي يمكن للآخرين التعهد بتوفيرها.
implements مقابل extends
باستخدام extends ترث الشيفرة. أما باستخدام implements فلا تتبنى إلا الشكل، ويجب أن تعيد كتابة كل عضو بنفسك.
class Robot implements Greeter {}مصدر واجهة بسيط
يمكن لأي فئة عادية أن تعمل كواجهة. هنا تعرّف Greeter طريقة واحدة يمكن للآخرين تنفيذها.
class Greeter {
String greet() => 'Hi';
}تنفيذ الواجهة
عندما تطبّق فئة، لا ينتقل أي جزء من شيفرتها إليك. بل توفر جسمًا جديدًا لكل عضو عرّفته تلك الفئة.
class Robot implements Greeter {
String greet() => 'Beep';
}يجب أن توفر كل شيء
يؤدي تخطي عضو واحد فقط إلى خطأ في الترجمة. تفرض implements تنفيذ الواجهة كاملةً، دون اختصارات موروثة.
class Robot implements Greeter {} // error: greet missingتنفيذ عدة واجهات
يمكن للفئة تطبيق عدة واجهات في الوقت نفسه عبر إدراجها مفصولةً بفواصل، فتحصل على جميع أشكالها معًا.
class Robot implements Greeter, Logger {}الفئات Abstract بوصفها واجهات
تُعد الفئات abstract الخالصة واجهات رائعة. فهي تعلن عن التواقيع فقط، ولذلك لا يرث منفذوها أي شيفرة على الإطلاق.
abstract class Greeter {
String greet();
}الواجهة مع الوراثة
يمكنك الجمع بين الأمرين: استخدام extends لفئة واحدة للحصول على شيفرتها، وimplements لفئات أخرى للحصول على أشكالها في التعريف نفسه.
class Robot extends Machine implements Greeter {}البرمجة مقابل الواجهة
بعد أن تطبّق فئة Greeter، يمكنك تخزينها في متغير من نوع Greeter واستدعاء greet دون معرفة النوع concrete.
Greeter g = Robot();
print(g.greet());تبقى الواجهات مفصولة
لأن implements لا ينسخ أي سلوك، تظل فئتك مستقلة عن الفئة الأصلية. ويمكنك تغيير المصدر بحرية دون وراثة أخطائه.
تتحول الحقول إلى Getters
يظهر الحقل في الواجهة كمتطلب getter. ويمكنك استيفاؤه بحقل فعلي أو getter محسوب.
class Robot implements Named {
final String name = 'R2';
}تحقق سريع
سؤال سريع عن تنفيذ الواجهات.
مراجعة
تعرّف كل فئة واجهة ضمنية. استخدم implements لتبنّي شكلها وإعادة تنفيذ كل عضو فيها، بل وللجمع بين عدة واجهات في الوقت نفسه. 🔌
تعلم Dart مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «الواجهات الضمنية وimplements» مجاني؟
نعم — نص درس «الواجهات الضمنية وimplements» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Dart Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Dart Academy 4 دروس في المجموع.
ماذا ستتعلم في «الواجهات الضمنية وimplements»؟
تعامل مع أي فئة باعتبارها واجهة تتمرن على Dart Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Dart Academy؟
لا تُشترط خبرة سابقة. Dart Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «الواجهات الضمنية وimplements»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Dart Academy هذا؟
نعم. كل درس في Dart Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الفئات والطرق المجرّدة
- الواجهات الضمنية وimplements
- تعدد الأشكال عبر الأنواع المشتركة
- التركيب أفضل من الوراثة