Résumé
En informatique, l’héritage multiple est un mécanisme de programmation orientée objet dans lequel une classe peut hériter de comportements et de fonctionnalités de plus d'une super-classe. Il s'oppose à l'héritage simple, dans lequel une classe ne peut hériter que d'une seule super-classe. Il est supporté par certains langages de programmation, par exemple C++, Eiffel ou Python. Pouvant poser des problèmes, d’autres langages comme Ada, C#, Fortran, Java, Objective-C, Ruby, Swift ou Visual Basic ont préféré ne pas le proposer directement. L'héritage multiple sert à combiner les comportements de plusieurs classes. Selon B. Stroustrup, l'inventeur du langage C++, ce mécanisme est facultatif parce que les problèmes qu'il résout peuvent être résolus par d'autres moyens. L'héritage multiple génère parfois des erreurs de compilation. Le principal problème rencontré est la présence de différentes implémentations par les super-classes d'une certaine classe pour une même déclaration. Ce problème est aussi connu sous le nom du problème du diamant. Un autre problème est la compilation de classes à héritage multiple. En effet, lorsqu'une méthode polymorphique est appelée, il faut déduire la bonne implémentation à exécuter. Si la méthode est le résultat d'un héritage simple, elle n'a alors qu'une seule implémentation possible, et il ne sera donc pas difficile retrouver l'implémentation. Si la méthode est le résultat d'un héritage multiple, elle a alors plusieurs implémentations possibles. Il faut donc choisir l'une des implémentations concurrentes[c'est un problème?]. La compilation d'une classe à héritage multiple n'est par contre pas nécessairement moins efficace que la compilation d'une classe à héritage simple. Eiffel et Python proposent de prioriser les méthodes, indiquant lors de la déclaration d'héritage quelle méthode prendre dans les situations de polymorphisme en cas de conflit. Une méthode virtuelle, ou encore « méthode polymorphique » est une méthode destinée à pouvoir être redéfinie dans les sous-classes de la classe de celle-ci.
À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.