چرا وراثت چندگانه در سی شارپ امکان پذیر نیست؟
چرا وراثت چندگانه در سی شارپ امکان پذیر نیست؟

تصویری: چرا وراثت چندگانه در سی شارپ امکان پذیر نیست؟

تصویری: چرا وراثت چندگانه در سی شارپ امکان پذیر نیست؟
تصویری: قسمت 34 - آموزش سی شارپ - مشکلات وراثت چند کلاسه.avi 2024, نوامبر
Anonim

سی شارپ انجام می دهد نه پشتیبانی ارث چندگانه ، زیرا استدلال کردند که اضافه کردن ارث چندگانه پیچیدگی بیش از حد به C# اضافه کرد در حالی که سود بسیار کمی داشت. در سی شارپ کلاس ها فقط هستند مجاز به به ارث می برند از یک کلاس تک والد که تک نامیده می شود وراثت.

بنابراین، چرا ارث چندگانه مجاز نیست؟

جاوا پشتیبانی می کند ارث چندگانه فقط از طریق رابط ها یک کلاس می تواند هر تعداد اینترفیس را پیاده سازی کند اما می تواند تنها یک کلاس را گسترش دهد. وراثت چندگانه پشتیبانی نمی شود زیرا منجر به مشکل مرگبار الماس می شود. یک رابط قراردادی از چیزهایی است که کلاس شما باید اجرا کند.

همچنین ممکن است سوال شود که آیا می توانیم چندین رابط را در سی شارپ به ارث ببریم؟ رابط ها مانند قراردادها یا "قراردادها" در مورد چه طبقه ای هستند می تواند انجام دهد . کلاس ها می توان دارند رابط های متعدد ، اما کلاس ها نمی توانند به ارث بردن چندگانه کلاس ها. کلاس ها به ارث بردن از بیش از یکی کلاس به عنوان شناخته می شود چندگانه - وراثت . سی شارپ انجام می دهد اجازه نمی دهد چندگانه - وراثت.

در اینجا، مشکل Diamond در C# وراثت چندگانه چیست؟

" مشکل الماس " ابهامی است که وقتی دو کلاس B و C ایجاد می شود به ارث می برند از A و کلاس D ارث می برد از هر دو B و C. اگر متدی در A وجود داشته باشد که B و C آن را باطل کرده باشند، و D آن را نادیده نگیرد، پس کدام کلاس از متد D را انجام می دهد. به ارث می برند : آن B یا C؟

وراثت چندگانه در سی شارپ با مثال چیست؟

سی شارپ اجازه نمی دهد ارث چندگانه با کلاس ها اما می توان آن را با استفاده از رابط پیاده سازی کرد. دلیل پشت این است: ارث چندگانه اضافه کردن پیچیدگی بیش از حد با سود کم. احتمال تضاد اعضای کلاس پایه بسیار زیاد است. وراثت با رابط فراهم می کند همان کار از ارث چندگانه.

توصیه شده: