Question

Même si elle pourrait être mauvaises pratiques, je dirais qu'il est temps qu'il remplirait son but.

Était-ce utile?

La solution

https://stackoverflow.com/questions / 995255 / pourquoi-est-héritage multiple-sans-permis en java ou c- couvre bien cette question.

Mon avis sur la question est la suivante: Les concepteurs voulaient probablement faire une langue qui a favorisé de bons principes de conception. Ok, donc il y a des moments que l'héritage multiple est parfait. Ce sont l'exception plutôt que la règle, cependant, et peut être abusé très facilement. Ainsi, les concepteurs ont décidé de rendre impossible de le faire.

Dans les cas où il serait bon, vous avez besoin d'utiliser des interfaces. Les travaux, quoique de façon maladroite; mais, vous en aurez pas besoin pour cela que beaucoup.

Autres conseils

Juste pour illustrer pourquoi pas, l'héritage multiple est pris en charge par C ++, mais il est fortement déconseillé que vous pouvez accomplir la plupart des choses avec la composition que vous le feriez avec M.I., mais d'une manière beaucoup plus propre mode. Contrairement à C ++, C # est pas un langage OOP de type « hybride », à-dire qu'elle n'a pas évolué d'une langue précédente.

Si vous avez vraiment besoin d'héritage multiple, vous pouvez implémenter plusieurs interfaces.

Walter Bright est à la fois le créateur de D, qui ne comprend pas MI, et la seule personne à écrire tout un compilateur C ++ en lui-même. Selon lui, la raison pour D manque MI est qu'il est trop difficile de créer un système de MI qui est en même temps efficace, simple et utile. Je soupçonne # Java et C utilisent un raisonnement similaire. Des langages comme Perl et Python n'ont pas l'efficacité comme objectif principal, de sorte qu'ils ont un système qui est simple et utile, mais difficile à mettre en œuvre efficacement. C ++ ne semble pas avoir la simplicité comme un but, il a créé un système massivement compliqué que presque personne ne comprend.

Je pense que Walter est sur la bonne cible. S'il existe une langue qui a un système MI qui satisfait tous les trois de ces critères assez bien, s'il vous plaît laisser un commentaire.

L'héritage multiple, si vous l'utilisez beaucoup, les résultats dans des situations très complexes. complexité Trop peu d'avantages est pourquoi il a été exclu pour Java et C #.

Parce que les concepteurs de langage voulaient apparemment pour produire un meilleur C ++, pas une meilleure langue en général. (Ils ont quel succès peuvent être débattues.)

C ++ - le style héritage multiple a des problèmes, et pour que les gens provenant de C ++ généralement omis, il (Java, C #, D). D'autres langues, Lisp Eiffel et commun pour nommer deux, faire différemment et ne semblent pas avoir les mêmes problèmes.

Licencié sous: CC-BY-SA avec attribution
scroll top