لماذا الميراث المتعدد غير ممكن في C #؟
لماذا الميراث المتعدد غير ممكن في C #؟

فيديو: لماذا الميراث المتعدد غير ممكن في C #؟

فيديو: لماذا الميراث المتعدد غير ممكن في C #؟
فيديو: حكم التأخر في توزيع الميراث الشيخ د.عثمان الخميس 2024, يمكن
Anonim

C # يفعل ليس الدعم تعدد الميراث ، لأنهم سببوا ذلك الإضافة تعدد الميراث أضاف الكثير من التعقيد إلى C # مع توفير فائدة قليلة جدًا. في C # ، الفصول الدراسية فقط مسموح إلى يرث من فئة الوالد الوحيد ، والتي تسمى واحدة ميراث.

فقط هكذا ، لماذا الميراث المتعدد غير مسموح به؟

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

قد يتساءل المرء أيضًا ، هل يمكننا أن نرث واجهات متعددة في C #؟ واجهات هي مثل الاتفاقات أو "العقود" على ما فئة يمكن القيام به . الطبقات علبة لديك واجهات متعددة ، ولكن لا يمكن للفصول ترث متعددة الطبقات. الطبقات وراثة من أكثر من واحد تُعرف الطبقة باسم مضاعف - ميراث . C # يفعل غير مسموح مضاعف - ميراث.

وهنا ما هي مشكلة الماس في تعدد الميراث C #؟

ال " مشكلة الماس "هو غموض ينشأ عند وجود فئتين B و C يرث من أ ، والفئة د يرث من كل من B و C. إذا كانت هناك طريقة في A تم تجاوزها B و C ، ولم يتجاوزها D ، فعندئذٍ أي فئة من الطريقة تفعل D يرث : أن B أو C؟

ما هو تعدد الميراث في C # مع المثال؟

سي # لا يسمح تعدد الميراث مع الفئات ولكن يمكن تنفيذه باستخدام الواجهة. السبب وراء ذلك هو: تعدد الميراث تضيف الكثير من التعقيد مع القليل من الفوائد. هناك فرص كبيرة لتضارب أعضاء الفئة الأساسية. ميراث مع واجهة توفر نفس الوظيفة تعدد الميراث.

موصى به: