Mesmo que possam ser más práticas, eu diria que há tempo para cumprir seu objetivo.
.net
c#
object-oriented
Amir Rezaei
fonte
fonte
Respostas:
/programming/995255/why-is-multiple-inheritance-not-allowed-in-java-or-c aborda bem essa questão.
Minha opinião é a seguinte: os designers provavelmente queriam criar uma linguagem que promovesse bons princípios de design. Ok, há momentos em que a herança múltipla é perfeita. Essa é a exceção, e não a regra, e pode ser abusada com muita facilidade. Então, os designers decidiram tornar isso impossível.
Para os casos em que seria bom, você precisa usar interfaces. Esses trabalhos, embora desajeitadamente; mas você não precisará muito deles.
fonte
Apenas para ilustrar por que não, a herança múltipla é suportada pelo C ++, mas é fortemente desencorajada, pois você pode realizar a maioria das coisas com a composição que faria com o MI, porém de uma maneira muito mais limpa. Diferentemente do C ++, o C # não é uma linguagem OOP do tipo "híbrido", ou seja, não evoluiu de uma linguagem anterior.
Se você realmente precisar de herança múltipla, poderá implementar várias interfaces.
fonte
Walter Bright é o criador do D, que não inclui o MI, e a única pessoa a escrever um compilador C ++ inteiro sozinho. Segundo ele, o motivo pelo qual D não tem MI é que é muito difícil criar um sistema de MI simultaneamente eficiente, simples e útil. Eu suspeito que Java e C # usam raciocínio semelhante. Idiomas como Perl e Python não têm eficiência como objetivo principal; portanto, eles têm um sistema simples e útil, mas difícil de implementar com eficiência. O C ++ não parece ter a simplicidade como objetivo, por isso criou um sistema extremamente complicado que quase ninguém entende.
Eu acho que Walter está bem no alvo. Se houver algum idioma que possua um sistema MI que atenda razoavelmente bem a todos esses três critérios, deixe um comentário.
fonte
A herança múltipla, se você a usa muito, resulta em situações muito complexas. Muita complexidade com pouco benefício é o motivo pelo qual foi descartada para Java e C #.
fonte
Como os designers de linguagem aparentemente queriam produzir um C ++ melhor, não um idioma melhor em geral. (O sucesso deles pode ser debatido.)
A herança múltipla no estilo C ++ tem alguns problemas e, portanto, as pessoas que derivam do C ++ geralmente a omitem (Java, C #, D). Outras línguas, Eiffel e Common Lisp, para citar duas, fazem de maneira diferente e não parecem ter os mesmos problemas.
fonte