11.6. Structure des classes et des objets en Java : héritage

L'héritage est l'un des concepts fondamentaux de la programmation orientée objet (POO), et en Java, c'est un élément crucial qui permet une structure de classe et d'objet efficace et puissante. L'héritage permet à une classe d'hériter des champs et des méthodes d'une autre classe, favorisant ainsi la réutilisation du code et la création d'une hiérarchie de classes liées.

Qu'est-ce que l'héritage ?

L'héritage est un mécanisme par lequel une nouvelle classe, appelée sous-classe, peut acquérir les propriétés d'une classe existante, appelée superclasse. L'héritage facilite la modularité et l'organisation du code, permettant aux développeurs de créer des classes plus spécialisées à partir de classes plus générales.

Comment fonctionne l'héritage en Java

En Java, l'héritage s'effectue avec le mot-clé extends. Lorsqu'une classe est dérivée d'une autre classe à l'aide de extends, elle hérite de tous les membres publics et protégés (champs, méthodes) de la superclasse. Les membres privés de la superclasse ne sont pas hérités directement, mais sont accessibles via des méthodes publiques ou protégées.

classe Animal { Nom de la chaîne ; public void émetSound() { System.out.println("L'animal fait un bruit."); } } la classe Chien étend Animal { public void émetSound() { System.out.println("Le chien aboie : Au Au !"); } }

Dans l'exemple ci-dessus, la classe Dog hérite de la classe Animal. Cela signifie qu'un objet Dog aura accès au champ name et pourra appeler la méthode emitSound().

Remplacement de méthode

En héritage, la sous-classe a la capacité de remplacer les méthodes de la superclasse. Ceci est fait pour définir un comportement spécifique dans la sous-classe. Dans l'exemple précédent, la méthode Sound() est remplacée dans la classe Dog pour refléter le son spécifique émis par un chien.

Utiliser super

Le mot-clé super est utilisé pour référencer directement l'objet superclasse. Il peut être utilisé pour appeler le constructeur de la superclasse, ainsi que pour accéder aux méthodes qui ont été remplacées par la sous-classe.

la classe Chat étend Animal { public Chat() { super.name = "Chat" ; } public void émetSound() { super.emitSound(); // Appel de la méthode superclasse System.out.println("Le chat miaule : Miaou !"); } }

Dans l'exemple ci-dessus, le constructeur de la classe Cat attribue une valeur au champ name de la superclasse Animal. Et la méthode emitarSound() appelle d'abord la méthode superclasse avant d'ajouter son propre comportement.

Héritage et constructeurs

En Java, les constructeurs ne sont pas hérités. Cependant, la sous-classe peut appeler les constructeurs de la superclasse en utilisant le mot-clé super. Cela se fait généralement sur la première ligne du constructeur de sous-classe.

la classe Bird étend Animal { oiseau public() { super(); // Appel du constructeur de la superclasse // Autres initialisations } }

Il est important de noter que si la superclasse n'a pas de constructeur sans argument (un constructeur par défaut), la sous-classe doit appeler explicitement l'un des constructeurs disponibles de la superclasse.

Modificateurs d'accès et d'héritage

Les modificateurs d'accès en Java définissent la manière dont les membres d'une classe sont accessibles. En héritage, ces modificateurs déterminent ce qui est hérité par la sous-classe :

  • Public : les membres publics sont hérités par la sous-classe et sont accessibles depuis n'importe quelle autre classe.
  • Protégé : les membres protégés sont hérités par la sous-classe et sont accessibles dans le même package ou par les sous-classes de différents packages.
  • Privé : les membres privés ne sont pas hérités par la sous-classe, mais sont accessibles indirectement via les méthodes publiques ou protégées de la superclasse.

Héritage et polymorphisme

Le polymorphisme est un autre concept clé de la POO qui permet de traiter des objets de différentes sous-classes comme des objets de la superclasse. Ceci est possible grâce à l'héritage et permet d'utiliser la même méthode dans différents contextes, selon le type d'objet qui l'invoque.

Animal monAnimal = new Dog(); monAnimal.emitSound(); // Sortie : Le chien aboie : Au Au !

Dans l'exemple ci-dessus, même si myAnimal est de type Animal, la méthode emitSound() qui est appelée est celle de la classe Chien, grâce au polymorphisme.

Considérations finales sur l'héritage

L'héritage est un outil puissant, mais il doit être utilisé avec précaution. Le toiUn héritage excessif peut conduire à des hiérarchies de classes complexes et difficiles à maintenir. Il est important de concevoir des systèmes avec héritage uniquement lorsque cela a un sens conceptuel, et pas seulement pour réutiliser du code. La composition, où une classe contient une autre classe, peut souvent être une alternative plus flexible à l'héritage.

En résumé, l'héritage en Java vous permet de créer une structure efficace de classes et d'objets, favorisant la réutilisation du code et l'organisation logique. En comprenant et en appliquant correctement les concepts d'héritage, de remplacement de méthode, d'utilisation de super, de modificateurs d'accès et de polymorphisme, les développeurs peuvent créer des systèmes robustes et évolutifs.

Répondez maintenant à l’exercice sur le contenu :

_Laquelle des affirmations suivantes concernant l'héritage en Java est correcte ?

Tu as raison! Félicitations, passez maintenant à la page suivante

Vous avez raté! Essayer à nouveau.

Image de l'article Structure des classes et des objets en Java : Polymorphisme 65

Page suivante de lebook gratuit :

Structure des classes et des objets en Java : Polymorphisme

Temps de lecture estimé : 0 minutes

Téléchargez l'application pour obtenir une certification gratuite et écouter des cours en arrière-plan, même avec l'écran éteint.

+ 6,5 millions
d'étudiants

Certificat gratuit et
valide avec QR Code

48 mille exercices
gratuits

Note de 4,8/5 dans les
magasins d'applications

Cours gratuits en
vidéo, audio et texte