13.1 Héritage et polymorphisme en Java : concept d'héritage
L'héritage est l'un des piliers fondamentaux de la programmation orientée objet (POO), et Java, étant un langage qui adopte ce paradigme, offre des ressources robustes pour sa mise en œuvre. L'héritage est un mécanisme qui permet à une nouvelle classe de dériver des propriétés et des comportements d'une classe existante. La classe héritée est appelée classe de base, superclasse ou classe parent, tandis que la classe qui hérite est appelée classe dérivée, sous-classe ou classe enfant.
En pratique, l'héritage permet de réutiliser du code et de créer une hiérarchie de classes liées. Cela permet non seulement d'économiser du temps et des efforts dans le développement de logiciels, mais permet également de garder le code organisé, plus facile à maintenir et à développer.
Comment fonctionne l'héritage en Java
En Java, l'héritage s'effectue avec le mot-clé extends
. Lorsqu'une classe est définie comme l'extension d'une autre, elle hérite de tous les champs (attributs) et méthodes non privés de la classe parent. Cela signifie que la classe enfant peut utiliser ces membres comme les siens.
Exemple :
Dans cet exemple, Car
est une sous-classe de Vehicle
. La classe Car
hérite de la méthode honk
et de l'attribut brand
de la classe Vehicle
, et définit également son propre attribut , NomModèle
.
Remplacement de méthode
Une sous-classe en Java peut remplacer les méthodes de la superclasse. Ceci est effectué lorsque la sous-classe a besoin d'une implémentation spécifique pour une méthode héritée. L'exposant est une forme de polymorphisme, qui sera discuté plus tard.
Exemple :
Dans cet exemple, la classe Pig
remplace la méthode sound
de la classe Animal
. Lorsque la méthode est appelée sur l'objet myPig
, l'implémentation de la classe Pig
est utilisée, et non celle de la classe Animal
.
Utiliser super
Le mot-clé super
en Java est utilisé dans les méthodes de sous-classe pour faire référence aux membres (méthodes ou attributs) de la superclasse. Ceci est particulièrement utile lorsque nous redéfinissons des méthodes tout en souhaitant accéder à l'implémentation de la superclasse.
Exemple :
Ici, la classe Pig
appelle la méthode sound
de la superclasse Animal
avant d'exécuter son propre code.
Polymorphisme en Java
Le polymorphisme, un autre pilier de la POO, permet de traiter des objets de différentes classes comme des objets d'une superclasse commune. Ceci est particulièrement puissant en combinaison avec l'héritage, car cela permet à une seule méthode ou classe d'opérer sur des objets de différentes classes.
Le polymorphisme en Java est, pour l'essentiel, réalisé grâce à la surcharge et au remplacement de méthodes. La surcharge se produit lorsque deux méthodes ou plus de la même classe ont le même nom mais des paramètres différents. Comme nous l'avons vu, la substitution se produit lorsqu'une sous-classe fournit une implémentation spécifique pour une méthode déjà fournie par sa superclasse.
Exemple de polymorphisme :
Dans cet exemple, la classe Main
crée des objets de différents types, mais ils sont tous traités comme des instances de la classe Animal
. Cela démontre un polymorphisme, car la méthode sound
se comporte différemment selon le type d'objet qui l'invoque.
Conclusion
L'héritage et le polymorphisme sont des concepts clés de la programmation orientée objet et sont largement utilisés en Java pour créer du code réutilisable et des systèmes extensibles. En comprenant et en appliquant ces concepts, les développeurs peuvent écrire du code plus propre, plus modulaire et plus facile à maintenir.
Ce cours Java devrait vous fournir une solide compréhension de ces concepts, vous permettant de les appliquer dans des scénarios réels et de créer des applications robustes et efficaces.