Polymorphism
هى كلمة منشقه من كلمتين باللغة الاتينية Poly
Morph بمعنى تعدد الأشكال وهناك ثلاثة مفاهيم من تعدد الأشكال
1- Overloading
2- Overrides
3- Inheritance
ممكن سؤال يختر
فى بالك الأن إزاى
Inheritance يمكن أن يكون به
تعدد للإشكال؟
والإجابة سوف تعرفها فى الشرح التالى.
أولاً: Overloading
هو القدرة على تعريف أكثر من Method
بنفس الإسم ولكن بإختلاف التوقيع أو .Signature
الغرض:
هو عمل Package
لأكثر من Method
بنفس الإسم وبإختلاف التنفيذ .Implementation
ماهو التوقيع
أو Signature؟
Signature
عبارة عن ثلاثة أشياء
1-
Access
Modifier
2-
Return Type
-->
عندما تكون 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 سوف يتم الحديث عنها بشىء من التفصيل فى الدروس القدمة إن شاء الله
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
سوف نستخدم الأن 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 التعليقات
Thank You Very Much For That
شرح ممتاز شكراا لك اخي
نشكركم على هذا المجهود
ونتمنى ان تاتونا بالمزيد
ونتمنى لكم التوفيق
أسعدك الله ، موضوع رائع وأفادني كثيراً
كل الشكر
أنا سعيدة جدا بكم أتمنى لكم التوفيق وأن يكون هذا في ميزان حسناتكم فاجعلوه خالصا لوجه الله تعالى
بارك الله فيكم
الله يجزيك خير بالله عليك ان كان عنك كتاب #C باللغة العربية الرجاء الارسال على الايميل
h.mondo89@yahoo.com
جزاكم الله كل خير بجد شرح كثير رائع ومفيد
ماشاء الله عالشرح
ادا يوجد لك كتاب بالعربي انشره الي عالايميل هدا nonohatea nimbuzz
رائع جدا الشرح و مبسط و يستخدم المعاني الصحيحة و الانجليزية بشكل رائع ...شكرا لك و نفع الله بك :)
Thanks very good
إرسال تعليق