الدرس الرابع: Polymorphism
Polymorphism هى كلمة منشقه من كلمتين باللغة الاتينية Poly Morph بمعنى تعدد الأشكال وهناك ثلاثة مفاهيم من تعدد الأشكال
1-Overloading
2-Overrides
3-Inheritance
ممكن سؤال يختر فى بالك الأن إزاى Inheritance يمكن أن يكون به تعدد للإشكال؟
والإجابة سوف تعرفها فى الشرح التالى.
أولاً: Overloading
هو القدرة على تعريف أكثر من Method بنفس الإسم ولكن بإختلاف التوقيع أو .Signature
الغرض:
هو عمل Package لأكثر من Method بنفس الإسم وبإختلاف التنفيذ .Implementation
ماهو التوقيع أو Signature؟
Signature عبارة عن ثلاثة أشياء
1-Access Modifier
2-Return Type
3-No. of Parameters
ملحوظه: لو تم تغير Access Modifier أو Return Type فقط يحدث Compiler Error
ثانياً: Overriding
عندما تكون Methods موجوده فى كلاس منشق Derived Class تملك نفس الإسماء فى Base Class ونريد أن نغير الكود بداخلها Implementation هذه العملية تسمى Overriding.
الغرض:
إضافة إجراءات جديدة إلى نفس ال Method الموجوده فى Base class أو إلغاء هذا الإجراء ووضع إجراء جديد.
Add New Functionality or enhance the method performance
Cancel the old implementation of method and write new
لاحظ أننى أحيانا بضع التعريف أيضا بالغة الإنجليزية لأنه فى بعض الأحيان يكون أوضح للأننا بطبيعة الحال بنتعامل مع لغة برمجه تستعمل اللغة الإنجليزية فى إجراءاتها.
الكلمات التى تستخدم فى عملية Overriding:
1-Virtual
2-Override
3-New
4-Abstract
سوف نستخدم الأن New و Override و New وفى الدروس القادمة بإذن الله سوف نتعرض ل Abstract
أولا: Virtual وهى Key word عند كتابتها فى Method داخل كلاس أب Parent تعنى أن هذه ال Method يمكن عمل له تعديل عليها فى الكلاس الإبن Child class.
ثانيا: Override وهى Key word تكتب فى ال Method المراد التعديل على الكود المنفذ لها داخل كلاس الابن والموجوده مسبقا فى كلاس الاب.
ثالثا: New عند كتابتها فى ال Method الموجوده فى كلاس الابن والموجودة مسبقا فى الكلاس الاب تعنى بأن ال Method الجديده تلغى وجود ال Method المنشقه من الكلاس الأب ولا يمكن أن تنشق مره أخرى إلى كلاس جديدة.
رابعا: Abstract سوف يتم الحديث عنها بشىء من التفصيل فى الدروس القدمة إن شاء الله
Virtual keyword is used to modify a method declaration, and allow it to be overridden in a derived class.
Override modifier is required to extend or modify the abstract or virtual implementation of an inherited method
New – When used as a modifier, the new keyword explicitly hides a member inherited from a base class. Hiding an inherited member means that the derived version of the member replaces the base-class version
ملحوظة: يسمح بعمل Multilevel Overrides
ثالثأ: Inheritance
البعض ممكن أن يتسائل ما علاقه Inheritance بال Polymorphism
أقول لكم بأن ال Polymorphism هو مبدء تعدد الأشكال و ال Inheritance ينطبق عليه هذا المبدء وهذا يتضح فى الميثال التالى:
لو فرضنا أن يوجد كلاس أسمه Human فيه Method أسمها Speak, ويوجد أيضا كلاس أسمه Mute أى أخرص وبها Two Method واحده Speak منشقه من الكلاس الأب وأخرى NonSpeak.
ولدينا شخصين Ahmed و Ali لا يستطعا الكلام, فهنا يمكن Object من كلاس Mute بطريقتين مختلفتين.
|
إضغط على الصورة للتكبير |
ما هو الفرق وما الفائدة؟؟؟
الفرق بأن فى حالة Human Ali = New Mute فإننا بنقيد ali بالأسماء وأعداد ال Method الموجوده فى Human
بمعنى لو أردنا أن نستدعى NonSpeak Method من Mute يحدث خطأ لان هذه ال Method غير موجوده فى Human.
Ali.NonSpeak Error
المفضلات