كيفية استخدام الربط الديناميكي في جافا؟

Kyfyt Astkhdam Alrbt Aldynamyky Fy Jafa



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

توضح هذه المدونة استخدام وتنفيذ الربط الديناميكي في Java.

كيفية استخدام الربط الديناميكي في جافا؟

يتيح الربط الديناميكي الاقتران السائب بين الكائنات. يساعد في الامتداد السهل للوظائف عن طريق إضافة فئات فرعية جديدة تتجاوز الطرق دون تعديل الكود الحالي. يتم استخدام الربط الديناميكي على نطاق واسع في إرسال وقت التشغيل أو معالجة الأحداث أو أنظمة المكونات الإضافية.







دعنا نتصفح بعض الأمثلة للحصول على شرح مفصل:



مثال 1: تنفيذ الربط الديناميكي



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





استيراد java.util.Arrays ؛
استيراد java.util.HashSet ؛
استيراد java.util.List ؛
استيراد java.util.Set ؛

فئة عامة DynBind {
العامة ثابت الفراغ الرئيسي ( خيط [ ] أرجس ) {
game gameType1 = لعبة الكريكيت الجديدة ( ) ؛
لعبة الألعاب Type2 = CallofDuty الجديدة ( ) ؛
gameType1.gameType ( ) ؛
gameType2.gameType ( ) ؛
}
}
فئة الألعاب {
لعبة الفراغ العامة النوع ( ) {
System.out.println ( 'ألعاب فعلية أو افتراضية' ) ؛
}
}
فئة الكريكيت تمتد اللعب {
@ تجاوز
لعبة الفراغ العامة النوع ( ) {
System.out.println ( 'الكريكيت لعبة فيزيائية' ) ؛
}
}
توسع فئة CallofDuty الألعاب {
@ تجاوز
لعبة الفراغ العامة النوع ( ) {
System.out.println ( 'CallofDuty هي لعبة افتراضية' ) ؛
}
}

شرح الكود أعلاه:



  • أولا ، الطبقة ' DynBind '، وكائنان من النوع' الألعاب '.
  • بعد ذلك ، تتم تهيئة هذه الكائنات بـ ' كريكيت ' و ' CallofDuty '، توضح هذه التهيئة الربط الديناميكي. نوع المرجع هو ' الألعاب 'ولكن أنواع الكائنات الفعلية هي' كريكيت ' و ' CallofDuty '، على التوالى.
  • الآن ، يتم استخدام هذه العناصر لاستدعاء ' نوع اللعبة() 'عن طريق تجاوز الوظيفة في الفصول الفرعية.
  • وبعد ذلك ، فإن الوالد ' الألعاب يتم التصريح عن الفئة التي تنشئ وتهيئ ' نوع اللعبة() '، والتي تطبع رسالة نصية وهمية.
  • بعد ذلك ، يتم إنشاء فصلين فرعيين باسم ' كريكيت ' و ' CallofDuty '. هذه الفئات موروثة من الأصل ' الألعاب ' فصل.
  • بعد ذلك ، ' @تجاوز 'التعليق التوضيحي لإلغاء الأصل' الألعاب 'طرق التصنيف المسماة' نوع اللعبة() '.
  • في النهاية ، يتم عرض رسالة وهمية مختلفة في كلتا الطريقتين اللتين تم تجاوزهما في فئة الأطفال.

بعد انتهاء مرحلة التنفيذ:

يعرض الإخراج أن الرسائل الوهمية للفئات الفرعية يتم عرضها على وحدة التحكم باستخدام الربط الديناميكي.

مثال 2: تنفيذ الميراث متعدد المستويات

يمكن أيضًا تنفيذ الربط الديناميكي لإنشاء وراثة متعددة المستويات. كتلتان من التعليمات البرمجية لنفس البرنامج كما هو موضح أدناه:

فئة الألعاب {
لعبة الفراغ العامة النوع ( ) {
System.out.println ( 'ألعاب فعلية أو افتراضية' ) ؛
}
}
فئة الكريكيت تمتد اللعب {
@ تجاوز
لعبة الفراغ العامة النوع ( ) {
System.out.println ( 'الكريكيت لعبة فيزيائية' ) ؛
}
تشغيل الفراغ العام ( ) {
System.out.println ( 'لعبة الكريكيت لها تنسيقات تشغيل مختلفة' ) ؛
}
}
توسع فئة CallofDuty الألعاب {
@ تجاوز
لعبة الفراغ العامة النوع ( ) {
System.out.println ( 'CallofDuty هي لعبة افتراضية' ) ؛
}
لعبة الفراغ العامة ( ) {
System.out.println ( 'CallofDuty لها أوضاع لعب متعددة' ) ؛
}
}
فئة الكريكيتلعبة تمتد لعبة الكريكيت {
لعبة الفراغ العامة ( ) {
System.out.println ( 'الكريكيت لديه وضع لعبة واحدة' ) ؛
}
}
فئة CallofDutyGame تمتد CallofDuty {
}

شرح الكود أعلاه:

  • أولاً ، الوالد ' الألعاب 'تم إنشاء فئة وتتضمن' نوع اللعبة() التي تحتوي على رسالة وهمية.
  • بعد ذلك ، هناك فصلين فرعيين باسم ' كريكيت ' و ' CallofDuty '، كلاهما يلغي وظيفة الفئة الأصل المسماة' نوع اللعبة() '.
  • تحتوي هذه الفئات على وظيفة إضافية واحدة تسمى ' اللعب ' و ' نوع اللعبة() ”، على التوالي.
  • بعد ذلك ، أنشئ طفلاً متعدد المستويات اسمه ' لعبة الكريكيت 'التي يوسعها الطفل' كريكيت ' فصل. يحتوي على ' نوع اللعبة() 'الوظيفة التي تم تجاوزها بواسطة الأصل' كريكيت ' فصل.
  • بعد ذلك ، ' CallofDutyGame 'تم إنشاء الفصل كطفل لـ' CallofDuty ' فصل. يقوم بإنشاء وراثة متعددة المستويات ولتمكين وظيفة الربط الديناميكي.

الآن ، أدخل ' رئيسي() ' طريقة:

فئة عامة DynBind {
العامة ثابت الفراغ الرئيسي ( خيط [ ] أرجس ) {
CallofDutyGame كودج = CallofDutyGame الجديد ( ) ؛
codg.gameType ( ) ؛
codg.gameMode ( ) ؛

لعبة الكريكيت كريج = لعبة الكريكيت الجديدة ( ) ؛
النوع ( ) ؛
cricg.playingFormat ( ) ؛
cricg.gameMode ( ) ؛
}
}

شرح الكود أعلاه:

  • أولاً ، موضوع ' CallofDutyGame يتم إنشاء فئة 'التي تستدعي وظائف فئاتها الأصلية.
  • بنفس الطريقة ، فإن ' لعبة الكريكيت 'يتم الإعلان عن الكائن الذي يستدعي وظيفة الفئة الأصلية الخاصة به والتي تتوفر على مستويات متعددة في التسلسل الهرمي.

بعد انتهاء مرحلة التنفيذ:

يوضح الإخراج أن الوراثة متعددة المستويات يتم إنشاؤها باستخدام الربط الديناميكي في Java.

خاتمة

في جافا ، ' الربط الديناميكي يقدم مزايا مثل تعدد الأشكال ، وقابلية إعادة استخدام الكود ، والمرونة ، وقابلية التوسع. يتم تنفيذه باتباع قواعد الميراث ، وتجاوز الطريقة ، والتنبؤ. يتيح الربط الديناميكي أيضًا وظائف وقت التشغيل ويعزز السلوك المرن ومتعدد الأشكال في مفهوم OOPs. هذا كل شيء عن استخدام وتنفيذ الربط الديناميكي في Java.