Différence entre Héritage et Polymorphisme
Q uelle est la différence entre Héritage et Polymorphisme ? – L’héritage permet, la ré-utilisabilité du code et le polymorphisme permet à une fonction d’avoir différente forme. La différence fondamentale entre l’héritage et le polymorphisme est que l’héritage permet de réutiliser le code existant dans la classe mère, et le polymorphisme fournit un mécanisme permettant de décider dynamiquement quelle forme d’une fonction à invoquer.
Illustration en UML
Définition de Polymorphisme
Le polymorphisme traite la manière dont le programme décide quelles méthodes utiliser, en fonction de son type. Si vous avez une Véhicule qui a une méthode demarrer() et que vous avez une Voiture qui hérite de Véhicule , qui a sa propre implémentation de demarrer(), la méthode appelée est déterminée par le compilateur, selon que vous avez une Véhicule ou un Voiture . Cela devient un peu difficile, mais si vous faites quelque chose comme
Vehicule v = new Voiture(); v.demarrer();
la méthode demarrer() sur Voiture est appelée. C’est ca le polymorphisme. Vous pouvez faire cette affectation car une Voiture est une Véhicule , mais le compilateur est suffisamment intelligent pour savoir que le type réel de v est Voiture .
Définition de l’Héritage
class Voiture extends Vehicule { }
L’héritage se produit lorsqu’une «classe» dérive d’une «classe» existante. Donc, si vous avez une classe Véhicule , vous avez une classe Voiture qui hérite de Véhicule , Voiture hérite de toutes les choses que cette véhicule possède. Il y a quelques détails sur les modificateurs d’accès que vous mettez sur les champs / méthodes dans Véhicule , mais c’est l’idée de base. Par exemple, si vous avez un champ privé sur Véhicule , Voiture ne le verra pas car ses champs privés ne sont pas visibles par les sous-classes.
Conclusion
L’héritage désigne l’utilisation du structure et du comportement d’une super classe dans une sous-classe. Bien que le polymorphisme se réfère à la modification du comportement d’une super-classe dans une sous-classe.