Pourquoi l'héritage multiple n'est pas autorisé en Java et C#
Il est bien connu que l'héritage multiple, la capacité pour une classe d'hériter à partir de plusieurs classes parents, n'est pas autorisé en Java ou C#. Bien que de nombreuses ressources indiquent simplement ce fait, elles ne parviennent souvent pas à approfondir les raisons sous-jacentes de cette décision de conception.
Réponse courte :
La raison est simplement parce que le langage les designers ont décidé de ne pas l'inclure.
Explication plus longue :
Les designers des deux .NET et Java ont estimé que l'héritage multiple ajoutait une complexité significative à leurs langages tout en offrant des avantages minimes. Les complexités impliquent :
-
Résolution des conflits : L'héritage multiple introduit le problème de la résolution des conflits lors de l'héritage de méthodes ou de propriétés portant le même nom à partir de différentes classes parents.
-
Gestion des redondances : Dans certains scénarios, l'héritage multiple peut conduire à des membres hérités en double. Cela peut provoquer ambiguïté et confusion.
-
Frais généraux de mise en œuvre : L'ajout d'héritage multiple introduit de la complexité dans des domaines tels que la diffusion, la mise en page, la répartition, l'accès aux champs, la sérialisation et les génériques.
Entretiens avec des concepteurs de langage :
Chris Brumme, qui a travaillé sur le CLR pour .NET, a expliqué plus en détail la décision :
- Différentes langues ont des attentes différentes pour MI, ce qui rend difficile la mise en œuvre d'une solution universelle.
- Les véritables applications de MI sont souvent limité, et des alternatives telles que l'héritage d'interfaces multiples ou l'encapsulation peuvent souvent suffire.
- La mise en œuvre de MI nécessiterait des changements importants dans la mise en œuvre du langage, affectant divers domaines de fonctionnalité.
Pour Java, la logique est similaire :
- La simplicité, la familiarité et le désir d'éviter les complexités inutiles en C étaient les principes directeurs de la conception de Java.
- Les concepteurs pensaient que l'héritage multiple causerait plus de problèmes qu'il n'en résoudrait, sur la base de leur expérience avec C .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!