Académique Documents
Professionnel Documents
Culture Documents
Héritage
Plan du cours
Introduction
Notion de l’héritage
L’héritage en java
Héritage et encapsulation
Le mot-clé super
La classe Object
Héritage
Notion de l’héritage (1/3)
Problème
Duplication de code.
Une modification faite sur un attribut commun (ou sur une méthode
commune) doit être refaite dans les autres classes.
Héritage -1-
Notion de l’héritage (2/3)
Solution
Personne
nom On place dans la classe mère tous les
Super-classe attributs communs et toutes les méthodes
cin
communes à toutes les classes.
lire()
Héritent de
Etudiant Employe Les classes filles ne comportent que les
moyenne salaire attributs ou les méthodes spécifiques.
reviser() travailler() Les classes filles héritent automatiquement de
la super-classe les attributs (et les méthodes)
qui n'ont pas besoin d'être ré-écrits.
Sous-classes
Héritage -2-
Notion de l’héritage (3/3)
Solution
Personne
Super-classe nom
cin Réutilisation du code
lire()
Un seul endroit pour faire des modifications
sur les attributs (ou les méthodes) en commun
Héritent de
Etudiant Employe
moyenne salaire
reviser() travailler()
Sous-classes
Héritage -3-
L’héritage en java (1/5)
En Java, on indique qu'une classe hérite d'une autre en utilisant le mot-clé "extends"
Personne
Héritage -5-
L’héritage en java (3/5)
EtreHumain Personne
peau nom
yeux cin
respirer() lire()
Personne
nom Etudiant hérite de Personne EtudiantTelecom
cin EtudiantTelecom hérite de Etudiant hérite de Personne
lire()
Héritage -7-
L’héritage en java (5/5)
Héritage en cascade
Héritage -8-
Héritage et encapsulation
Package 1 Package 2
Héritage -9-
Le mot-clé super
Héritage -10-
Constructeur de la sous classe (1/10)
Constructeur surchargé
} }
Héritage -13-
Constructeur de la sous classe (4/10)
Héritage -14-
Constructeur de la sous classe (5/10)
public Animal(int
nbPattes) {
this.nbPattes
= nbPattes; }
} class Chat extends Animal{
public
Dans notre cas, comme nous avons écrit un constructeur surchargé pour la classe
Animal, le constructeur par défaut n'existe pas.
On a alors une erreur de compilation lors de l’exécution de super()
Héritage -15-
Constructeur de la sous classe (6/10)
Solution 1
Déclarez explicitement le constructeur par défaut de la classe mère
public Animal(){}
public Animal(int
nbPattes) {
this.nbPattes
= nbPattes; }
} class Chat extends Animal{
public
Héritage -16-
Constructeur de la sous classe (7/10)
Solution 2
Faites un appel explicite au constructeur surchargé de la classe mère
public Animal(int
nbPattes) {
this.nbPattes
= nbPattes;
}
public
} class Chat extends Animal{
public Chat(){
super(4);
}
}
Héritage -17-
Constructeur de la sous classe (8/10)
Héritage -19-
Constructeur de la sous classe (10/10)
class Personne {
Héritage -21-
Redéfinition avec réutilisation
class Personne {
Héritage -22-
Surcharge
class Personne {
Héritage -23-
Surcharge vs redéfinition
class Personne {
surcharge redéfinition
class Etudiant extends Personne { class Etudiant extends Personne {
Héritage -24-
Empêcher la redéfinition
Une classe peut protéger une méthode afin d'éviter qu'elle ne soit redéfinie
dans ses sous-classes.
Héritage -25-
Empêcher l’héritage
Permet d’interdire tout héritage pour cette classe qui ne pourra pas être
une classe mère
Toutes les méthodes à l’intérieur de la classe final seront
implicitement finales
Héritage -26-
La classe Object (1/2)
Object
Personne Humain
Docteur
travailALHopital:boolean nom
cin
traiterPatient()
lire()
Client
Héritage -27-
La classe Object (2/2)
Héritage -28-
La méthode equals
Héritage -29-