+1 امتیاز
قبل در کامپیوتر و اینترنت توسط (1.2هزار امتیاز)
معایب استفاده از Multiple Inheritance چیستند ؟!

2 پاسخ

+1 امتیاز
قبل توسط (1.2هزار امتیاز)

در برخی موقعیت ها وراثت چندگانه باعث ایجاد ابهام خواهد بود موارد زیر نمونه از این موقعیت ها هستند :

  • اگر دو متغیر هم نام در کلاس های پایه با نوع داده متفاوت (و غیر قابل cast به یکدیگر) وجود داشته باشند کلاس مشتق شده از کدوم از اونها باید استفاده کنه ؟
  • به همین صورت اگر دو تابع در کلاس پایه با امضا یکسان وجود داشته باشد و کسی تابع را در کلاس مشتق شده فراخوانی کند از کدام یک استفاده می شود ؟
  • سازنده کلاس های مشتق شده به چه ترتیبی فراخوانی می شوند؟

این ابهامات اگر چه می تواند به دست برنامه نویس (و در صورتی که شما به طور مثال از کتابخانه های بسته استفاده نکنید) با عوض کردن نام ها بر طرف بشه اما باعث صرف زمان و همچنین ناخوانایی کد میشه ، در هر حال حتی با این فرض شما ویژگی هایی که در زبان های جدید وجود داره مثل type inference , pattern matching  و خیلی از قابلیت ها رو به خاطر گنگ بودن کد از دست خواهید داد.

زبان های مثل جاوا با ارائه راهکاری مثل interface ها با محدود کردن multi inhertance این مشکلات رو برطرف کردن. در اسکالا شما با استفاده از trait ها می توانید به صورت محدود (برای جلوگیری از اشکالات بالا) multi inhertance رو پشتیبانی کنید.

به هر ترتیب راه حل بهتر دیگر استفاده از composition بیشتر به جای inhertance می باشد.

0 امتیاز
قبل توسط (302 امتیاز)
عیب زمانی پیش میاد که چند تا کلاس چندتا راه مختلف رو برای انجام یک کار یکسان برن. وقتی کلاسی از این کلاس ها ارث بری کند نمیتونه تشخیص بده کدوم راه رو برای اون رسیدن به هدفش بره!

میشه جواب داد که خوب توی CPP که میشه این رو برای فرزند مشخص کنیم که از کدوم راه رو انتخاب کن!

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

فکر میکنم اگه این قابلیت به زبان های سطح بالا اضافه میشد پیچیدگی مفاهیم پرکاربرد مثله reflection، serialization، casting، layout و .... اینقدر زیاد میشد که دیگه عموم برنامه نویسا سراغ استفاده از این مفاهیم نمیرفتن!

این لینک ها هم میتونن مفید باشن:

java: http://www.geekinterview.com/question_details/17127

c#: http://blogs.msdn.com/b/csharpfaq/archive/2004/03/07/85562.aspx

سوالات مشابه

+1 امتیاز
1 پاسخ 1.1هزار بازدید
0 امتیاز
0 پاسخ 8 بازدید
0 امتیاز
0 پاسخ 15 بازدید
0 امتیاز
0 پاسخ 41 بازدید
سوال شده 10 ماه قبل در کامپیوتر و اینترنت توسط Sayar Noori_17617537 (0 امتیاز)
...