Vous êtes sur la page 1sur 6

L’héritage en Java

L’héritage est une technologie orientée objet fondamentale qui permet de


mettre en place les classes abstraites, le polymorphisme et la réutilisation de
code.
Soient 2 classes A et B quelconques, chaque fois que l’on peut dire qu’un
objet B est aussi un objet de A , on dit alors que la classe de B hérite de la
classe A. La relation « est un « doit être définie entre 2 entités pour qu’il y ait
héritage .

La classe A est alors appelée classe de base ou superclasse tandis que la classe
B est appelée sous- classe ou classe fille ou classe dérivée.
Dans A, on déclare les attributs propres à A ,un constructeur , des getters et
setters.
Dans B, on déclare les attributs spécifiques à B, un constructeur, des getters
et setters. Les attributs et méthodes de A sont automatiquement disponibles
dans B sans les y réécrire. Il y alors réutilisation de code dans B.
Pour construire un objet B , il faut d’abord construire un objet A et l’habiller
comme B. Cela veut dire que le constructeur de la classe B doit d’abord faire
obligatoirement appel au constructeur de A par l’instruction super() qui est
une fonction dans laquelle on passe les attributs de A et ensuite le
constructeur de B initialise ses propres attributs.

De manière générale, l’héritage utilise 2 techniques : la généralisation et la


spécialisation.
La généralisation consiste à regrouper les attributs communs aux sous-
classes (SC1 et SC2) et à les placer dans la classe de base (CB). Ces attributs
seront ensuite automatiquement disponibles dans les sous-classes par
héritage.
La spécialisation consiste à laisser les attributs non communs dans leurs sous-
classes respectives.
Exemple
Dans cet exemple nous avons 3 types d’objets : des personnes , des étudiants
et des professeurs.
Un étudiant est une personne donc la classe Etudiant hérite de de la classe
Personne. Un professeur est une personne donc la classe Professeur hérite de
la classe Personne.
Un étudiant possède comme attributs un nom , un prénom, une classe et une
section. Un professeur possède comme attributs un nom, un prénom, un
grade et une spécialité. On constate que les attributs nom et prénom sont
communs dans les sous-classes, cela justifie alors une généralisation dans une
classe de base nommée Personne et une spécialisation qui laisse les attributs
non communs (classe, section, grade, spécialité) dans leurs sous-classes
respectives. Les attributs de généralisation seront automatiquement
disponibles dans les sous-classes sans les y écrire.
Remarque : Lorsqu’une classe B hérite d’une classe A , on utilise le mot clé
extends
public class A
{

}
public class B extends A
{

En java, une classe ne peut hériter que d’une seule classe.

Le code du diagramme précédent sera le suivant


A/Classe Personne.java
public Class Personne
{
private String nom ;
private String prenom ;
public Personne(String nom, String prenom)
{
this.nom = nom ;
this.prenom=prenom ;
}

//getters et setters
}

B/Classe Professeur.java
public class Professeur extends Personne
{
private String grade ;
private String specialite ;
public Professeur(String nom, String prenom, String grade, String specialite)
{
super(nom,prenom) ;
this.grade=classe ;
this.specialite=specialite ;
}
//getters et setters
}
B/Classe Etudiant.java
public class Etudiant extends Personne
{
private String classe ;
private String section ;
public Etudiant(String nom, String prenom, String classe, String section)
{
super(nom,prenom) ;
this.classe=classe ;
this.section=section ;
}
//getters et setters
}

On remarquera l’utilisation du mot clé extends pour l’héritage. En outre, les


constructeurs des sous classes intègrent les attributs de la classe de base et
possèdent comme premières instructions l’appel à la fonction
super(nom,prenom) qui invoque le constructeur de la classe de base pour
créer une personne et ensuite l’habiller comme Etudiant ou Professeur.

Vous aimerez peut-être aussi