Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Principes de la POO : Héritage | Poo
Java POO
course content

Contenu du cours

Java POO

Java POO

1. Comment Travailler Avec un IDE ?
2. Poo
3. Interface

book
Principes de la POO : Héritage

Héritage

Abordons le principe de la POO - l'Héritage.

L'héritage est un mécanisme qui permet la création de classes à partir d'une autre classe.

  • La classe qui sert de base est appelée parent ou superclasse ;
  • 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).

Vous pouvez hériter d'une classe en utilisant le mot-clé extends. La syntaxe pour qu'une classe enfant hérite d'une classe parente est la suivante :

Child.java

Child.java

copy
123
class 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 il existe une classe Parrot avec ses propres champs et méthodes. Un perroquet est un oiseau, donc logiquement, le perroquet doit hériter de la classe Bird :

Voici le code de la capture d'écran, réécrit pour une meilleure lisibilité et clarté :

Bird.java

Bird.java

Parrot.java

Parrot.java

Main.java

Main.java

copy
12345678910111213141516171819
package 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 :

  1. Création d'une classe Bird, qui constitue la classe parente dans ce cas. Cette classe possède ses propres champs et méthodes ;
  2. Création d'une classe Parrot, qui utilise le mot-clé extends pour hériter de la classe parente Bird. La classe Parrot est une classe enfant et possède ses propres champs et méthodes. De plus, en tant que classe enfant, Parrot hérite de tous les champs et méthodes de la classe parente Bird ;
  3. Création d'un objet de la classe Parrot dans la méthode main et constatation que l'on peut initialiser les champs des classes parente et enfant. On initialise d'abord les champs de la classe parente Bird, puis ceux de la classe enfant Parrot. Ensuite, on appelle les 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 l'on dispose de nombreuses sous-classes de Bird, pas seulement Parrot, mais aussi par exemple Pigeon et Penguin, on se retrouve avec 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 rencontrer 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 prochaine section 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.

Imaginons que l'on hérite d'une classe, mais que certaines parties du code hérité ne conviennent pas. Supposons que l'on souhaite 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 suffit d'écrire @Override au-dessus de celle-ci :

Parrot.java

Parrot.java

copy
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, la méthode redéfinie sera invoquée !

  • Prévention de 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

Bird.java

Parrot.java

Parrot.java

copy
123
public 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 principales 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 ?

question mark

Pourquoi avons-nous besoin de l'héritage en Java ?

Select the correct answer

question mark

Combien de classes pouvons-nous hériter en même temps ?

Select the correct answer

question mark

Comment peut-on empêcher l'héritage en Java ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 2

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

course content

Contenu du cours

Java POO

Java POO

1. Comment Travailler Avec un IDE ?
2. Poo
3. Interface

book
Principes de la POO : Héritage

Héritage

Abordons le principe de la POO - l'Héritage.

L'héritage est un mécanisme qui permet la création de classes à partir d'une autre classe.

  • La classe qui sert de base est appelée parent ou superclasse ;
  • 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).

Vous pouvez hériter d'une classe en utilisant le mot-clé extends. La syntaxe pour qu'une classe enfant hérite d'une classe parente est la suivante :

Child.java

Child.java

copy
123
class 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 il existe une classe Parrot avec ses propres champs et méthodes. Un perroquet est un oiseau, donc logiquement, le perroquet doit hériter de la classe Bird :

Voici le code de la capture d'écran, réécrit pour une meilleure lisibilité et clarté :

Bird.java

Bird.java

Parrot.java

Parrot.java

Main.java

Main.java

copy
12345678910111213141516171819
package 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 :

  1. Création d'une classe Bird, qui constitue la classe parente dans ce cas. Cette classe possède ses propres champs et méthodes ;
  2. Création d'une classe Parrot, qui utilise le mot-clé extends pour hériter de la classe parente Bird. La classe Parrot est une classe enfant et possède ses propres champs et méthodes. De plus, en tant que classe enfant, Parrot hérite de tous les champs et méthodes de la classe parente Bird ;
  3. Création d'un objet de la classe Parrot dans la méthode main et constatation que l'on peut initialiser les champs des classes parente et enfant. On initialise d'abord les champs de la classe parente Bird, puis ceux de la classe enfant Parrot. Ensuite, on appelle les 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 l'on dispose de nombreuses sous-classes de Bird, pas seulement Parrot, mais aussi par exemple Pigeon et Penguin, on se retrouve avec 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 rencontrer 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 prochaine section 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.

Imaginons que l'on hérite d'une classe, mais que certaines parties du code hérité ne conviennent pas. Supposons que l'on souhaite 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 suffit d'écrire @Override au-dessus de celle-ci :

Parrot.java

Parrot.java

copy
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, la méthode redéfinie sera invoquée !

  • Prévention de 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

Bird.java

Parrot.java

Parrot.java

copy
123
public 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 principales 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 ?

question mark

Pourquoi avons-nous besoin de l'héritage en Java ?

Select the correct answer

question mark

Combien de classes pouvons-nous hériter en même temps ?

Select the correct answer

question mark

Comment peut-on empêcher l'héritage en Java ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 2
some-alt