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

<<<< الدرس السابق                                                                     الدرس التالى>>>>

11 التعليقات

غير معرف يقول... @ 14 فبراير 2012 في 3:23 م

Thank You Very Much For That

Unknown يقول... @ 3 مارس 2013 في 4:05 ص

شرح ممتاز شكراا لك اخي

غير معرف يقول... @ 13 مايو 2013 في 3:36 م

نشكركم على هذا المجهود

ونتمنى ان تاتونا بالمزيد

ونتمنى لكم التوفيق

Unknown يقول... @ 20 مايو 2013 في 5:21 م

أسعدك الله ، موضوع رائع وأفادني كثيراً
كل الشكر

غير معرف يقول... @ 17 يونيو 2013 في 12:41 م

أنا سعيدة جدا بكم أتمنى لكم التوفيق وأن يكون هذا في ميزان حسناتكم فاجعلوه خالصا لوجه الله تعالى
بارك الله فيكم

MONDO يقول... @ 16 أغسطس 2013 في 10:24 م

الله يجزيك خير بالله عليك ان كان عنك كتاب #C باللغة العربية الرجاء الارسال على الايميل
h.mondo89@yahoo.com

غير معرف يقول... @ 8 سبتمبر 2013 في 11:45 ص

جزاكم الله كل خير بجد شرح كثير رائع ومفيد

غير معرف يقول... @ 21 نوفمبر 2013 في 12:02 م

ماشاء الله عالشرح

غير معرف يقول... @ 21 نوفمبر 2013 في 12:04 م

ادا يوجد لك كتاب بالعربي انشره الي عالايميل هدا nonohatea nimbuzz

غير معرف يقول... @ 9 أبريل 2014 في 12:29 م

رائع جدا الشرح و مبسط و يستخدم المعاني الصحيحة و الانجليزية بشكل رائع ...شكرا لك و نفع الله بك :)

Unknown يقول... @ 30 مارس 2019 في 3:11 م

Thanks very good

إرسال تعليق