در برخی موقعیت ها وراثت چندگانه باعث ایجاد ابهام خواهد بود موارد زیر نمونه از این موقعیت ها هستند :
-
اگر دو متغیر هم نام در کلاس های پایه با نوع داده متفاوت (و غیر قابل cast به یکدیگر) وجود داشته باشند کلاس مشتق شده از کدوم از اونها باید استفاده کنه ؟
-
به همین صورت اگر دو تابع در کلاس پایه با امضا یکسان وجود داشته باشد و کسی تابع را در کلاس مشتق شده فراخوانی کند از کدام یک استفاده می شود ؟
-
سازنده کلاس های مشتق شده به چه ترتیبی فراخوانی می شوند؟
این ابهامات اگر چه می تواند به دست برنامه نویس (و در صورتی که شما به طور مثال از کتابخانه های بسته استفاده نکنید) با عوض کردن نام ها بر طرف بشه اما باعث صرف زمان و همچنین ناخوانایی کد میشه ، در هر حال حتی با این فرض شما ویژگی هایی که در زبان های جدید وجود داره مثل type inference , pattern matching و خیلی از قابلیت ها رو به خاطر گنگ بودن کد از دست خواهید داد.
زبان های مثل جاوا با ارائه راهکاری مثل interface ها با محدود کردن multi inhertance این مشکلات رو برطرف کردن. در اسکالا شما با استفاده از trait ها می توانید به صورت محدود (برای جلوگیری از اشکالات بالا) multi inhertance رو پشتیبانی کنید.
به هر ترتیب راه حل بهتر دیگر استفاده از composition بیشتر به جای inhertance می باشد.