Principes de l’Héritage en POO
Héritage
Présentation du principe de la POO : l'héritage.
L'héritage est un mécanisme permettant de créer des classes à partir d'une autre classe.
- La classe qui sert de base est appelée parent ou super-classe ;
- La classe créée à partir de la classe parente est appelée enfant, sous-classe ou descendante.
Ainsi, la classe enfant peut hériter des caractéristiques et propriétés d'une autre classe – la classe parente (ses méthodes et variables).
L'héritage d'une classe s'effectue à l'aide du mot-clé extends. La syntaxe pour qu'une classe enfant hérite d'une classe parente est la suivante :
Child.java
123class Child extends Parent { // properties and methods }
Examinons un exemple illustrant le fonctionnement de l'héritage dans le code. Nous avons une classe Bird avec certains champs et méthodes, et une classe Parrot avec ses propres champs et méthodes. Un perroquet est un oiseau, il est donc logique que la classe perroquet hérite de la classe Bird :
Voici le code de la capture d'écran, réécrit pour une meilleure lisibilité et clarté :
Bird.java
Parrot.java
Main.java
12345678910111213141516171819package animals.birds; public class Bird { public String color; public boolean canFly; public int maxAge; public void eat() { System.out.println("The bird is eating"); } public void fly() { if (canFly) { System.out.println("The bird is flying!"); } else { System.out.println("This bird can't fly :("); } } }
Analysons ce qui se passe dans ces illustrations :
- Création d'une classe
Bird, qui est la classe parente dans ce cas. Cette classe possède ses propres champs et méthodes ; - Création d'une classe
Parrot, qui utilise le mot-cléextendspour hériter de la classe parenteBird. La classeParrotest une classe enfant et possède ses propres champs et méthodes. De plus, en tant que classe enfant,Parrothérite de tous les champs et méthodes de la classe parenteBird; - Création d'un objet de la classe
Parrotdans la méthodemainet constatation que l'on peut initialiser les champs des classes parente et enfant. D'abord, initialisation des champs de la classe parenteBird, puis initialisation des champs de la classe enfantParrot. Ensuite, appel des méthodes : d'abord celles de la classe parente, puis celle de la classe enfant.
Ainsi, l'héritage a été utilisé pour hériter de la classe Bird.
Pourquoi faire cela ?
Lorsque plusieurs sous-classes de Bird existent, pas seulement Parrot, mais aussi Pigeon ou Penguin, il y aura de nombreux champs dupliqués, comme boolean canFly. L'héritage permet avant tout d'éviter la duplication de fragments de code.
De plus, cela améliore considérablement la lisibilité. En pratique, il est rare de manipuler directement la classe Bird et ses sous-classes, mais l'héritage est couramment utilisé, notamment avec les interfaces.
Remarque
Vous découvrirez les interfaces dans la section suivante de ce cours.
Règles de l'héritage
-
Hériter d'une seule classe. Java ne prend pas en charge l'héritage multiple. Une classe ne peut avoir qu'un seul parent ;
-
Tout est hérité sauf les variables et méthodes
private.
Remarque
Il est impossible d'hériter de soi-même !
Précédemment, il a été mentionné qu'une sous-classe aurait accès à toutes les variables et méthodes de la classe parente. Cependant, ce n'est pas tout à fait exact.
En réalité, toutes les méthodes et variables marquées avec le modificateur private ne sont pas accessibles à la sous-classe.
- Redéfinir la méthode de la classe parente.
Supposons que l'on hérite d'une classe, mais que certaines parties du code hérité ne conviennent pas. Il est possible de vouloir qu'une méthode spécifique fonctionne différemment de celle de la classe parente.
Pour redéfinir une méthode de la classe parente, il faut écrire @Override au-dessus de celle-ci :
Parrot.java
1234@Override public void eat() { System.out.println("The parrot is eating"); }
Dans le code ci-dessus, nous avons redéfini la méthode de la classe parente, et désormais, lorsque cette méthode est appelée depuis la classe enfant, c'est la méthode redéfinie qui sera invoquée !
- Empêcher l'héritage.
Si vous ne souhaitez pas que votre classe soit héritée, utilisez le modificateur final devant celle-ci.
Par exemple :
Bird.java
Parrot.java
123public final class Bird { // fields and methods }
De cette manière, en utilisant le mot-clé final, nous avons interdit l'héritage de la classe Bird.
Ce ne sont que les règles fondamentales et les caractéristiques de l'héritage. Il s'agit d'un sujet vaste, que vous utiliserez très fréquemment. Tout au long du cours, vous vous familiariserez avec d'autres aspects de l'héritage et les utiliserez plus souvent.
1. Pourquoi avons-nous besoin de l'héritage en Java ?
2. Combien de classes pouvons-nous hériter en même temps ?
3. Comment peut-on empêcher l'héritage en Java ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 4.76
Principes de l’Héritage en POO
Glissez pour afficher le menu
Héritage
Présentation du principe de la POO : l'héritage.
L'héritage est un mécanisme permettant de créer des classes à partir d'une autre classe.
- La classe qui sert de base est appelée parent ou super-classe ;
- La classe créée à partir de la classe parente est appelée enfant, sous-classe ou descendante.
Ainsi, la classe enfant peut hériter des caractéristiques et propriétés d'une autre classe – la classe parente (ses méthodes et variables).
L'héritage d'une classe s'effectue à l'aide du mot-clé extends. La syntaxe pour qu'une classe enfant hérite d'une classe parente est la suivante :
Child.java
123class Child extends Parent { // properties and methods }
Examinons un exemple illustrant le fonctionnement de l'héritage dans le code. Nous avons une classe Bird avec certains champs et méthodes, et une classe Parrot avec ses propres champs et méthodes. Un perroquet est un oiseau, il est donc logique que la classe perroquet hérite de la classe Bird :
Voici le code de la capture d'écran, réécrit pour une meilleure lisibilité et clarté :
Bird.java
Parrot.java
Main.java
12345678910111213141516171819package animals.birds; public class Bird { public String color; public boolean canFly; public int maxAge; public void eat() { System.out.println("The bird is eating"); } public void fly() { if (canFly) { System.out.println("The bird is flying!"); } else { System.out.println("This bird can't fly :("); } } }
Analysons ce qui se passe dans ces illustrations :
- Création d'une classe
Bird, qui est la classe parente dans ce cas. Cette classe possède ses propres champs et méthodes ; - Création d'une classe
Parrot, qui utilise le mot-cléextendspour hériter de la classe parenteBird. La classeParrotest une classe enfant et possède ses propres champs et méthodes. De plus, en tant que classe enfant,Parrothérite de tous les champs et méthodes de la classe parenteBird; - Création d'un objet de la classe
Parrotdans la méthodemainet constatation que l'on peut initialiser les champs des classes parente et enfant. D'abord, initialisation des champs de la classe parenteBird, puis initialisation des champs de la classe enfantParrot. Ensuite, appel des méthodes : d'abord celles de la classe parente, puis celle de la classe enfant.
Ainsi, l'héritage a été utilisé pour hériter de la classe Bird.
Pourquoi faire cela ?
Lorsque plusieurs sous-classes de Bird existent, pas seulement Parrot, mais aussi Pigeon ou Penguin, il y aura de nombreux champs dupliqués, comme boolean canFly. L'héritage permet avant tout d'éviter la duplication de fragments de code.
De plus, cela améliore considérablement la lisibilité. En pratique, il est rare de manipuler directement la classe Bird et ses sous-classes, mais l'héritage est couramment utilisé, notamment avec les interfaces.
Remarque
Vous découvrirez les interfaces dans la section suivante de ce cours.
Règles de l'héritage
-
Hériter d'une seule classe. Java ne prend pas en charge l'héritage multiple. Une classe ne peut avoir qu'un seul parent ;
-
Tout est hérité sauf les variables et méthodes
private.
Remarque
Il est impossible d'hériter de soi-même !
Précédemment, il a été mentionné qu'une sous-classe aurait accès à toutes les variables et méthodes de la classe parente. Cependant, ce n'est pas tout à fait exact.
En réalité, toutes les méthodes et variables marquées avec le modificateur private ne sont pas accessibles à la sous-classe.
- Redéfinir la méthode de la classe parente.
Supposons que l'on hérite d'une classe, mais que certaines parties du code hérité ne conviennent pas. Il est possible de vouloir qu'une méthode spécifique fonctionne différemment de celle de la classe parente.
Pour redéfinir une méthode de la classe parente, il faut écrire @Override au-dessus de celle-ci :
Parrot.java
1234@Override public void eat() { System.out.println("The parrot is eating"); }
Dans le code ci-dessus, nous avons redéfini la méthode de la classe parente, et désormais, lorsque cette méthode est appelée depuis la classe enfant, c'est la méthode redéfinie qui sera invoquée !
- Empêcher l'héritage.
Si vous ne souhaitez pas que votre classe soit héritée, utilisez le modificateur final devant celle-ci.
Par exemple :
Bird.java
Parrot.java
123public final class Bird { // fields and methods }
De cette manière, en utilisant le mot-clé final, nous avons interdit l'héritage de la classe Bird.
Ce ne sont que les règles fondamentales et les caractéristiques de l'héritage. Il s'agit d'un sujet vaste, que vous utiliserez très fréquemment. Tout au long du cours, vous vous familiariserez avec d'autres aspects de l'héritage et les utiliserez plus souvent.
1. Pourquoi avons-nous besoin de l'héritage en Java ?
2. Combien de classes pouvons-nous hériter en même temps ?
3. Comment peut-on empêcher l'héritage en Java ?
Merci pour vos commentaires !