Vous êtes sur la page 1sur 5

20/11/2023

Héritage

Chapitre 5:
Solution
Héritage et polymorphisme
• Placer dans la classe mère tous les attributs et toutes les
méthodes communs à toutes les classes.

• Les classes filles ne comportent que les attributs ou


méthodes plus spécifiques.

• Les classes filles héritent automatiquement les attributs


(et les méthodes) qui n'ont pas besoin d'être ré-écrits.

Année Universitaire: 2022 - 2023 136 138

136 138

Introduction Héritage

Super-classe Personne
• 3 classes : Personne Nom
Enseignant Nom
Etudiant cin
Personne Nom cin anneeNaiss
Nom cin Etudiant
Nom anneeNaiss age()
cin anneeNaiss
cin anneeNaissn age() Nom
prixHeure cin
anneeNaiss note1,note2 nbreHeure anneeNaissn
age() age() Enseignant
age() note1,note2 Etudiant Enseignant
moyenne() salaire() Nom age() note1,note2 prixHeure
cin moyenne() nbreHeure
Points faibles anneeNaiss moyenne()
prixHeure salaire()
• Duplication de code. nbreHeure
Sous-classes
age()
salaire()
137 139

137 139
20/11/2023

Héritage Héritage en cascade

140 142

140 142

Héritage Héritage et encapsulation

141 143

141 143
20/11/2023

Héritage et encapsulation Héritage et constructeurs

• Par défaut, le constructeur de la classe fille fait appel au


constructeur par « défaut » de la classe mère.
• Dans ce cas, le constructeur par défaut doit exister dans la
classe mère.

• Pour appeler un constructeur précis, on utilise le mot clé


super.
• Cet appel doit être la première instruction dans le
constructeur de la classe fille.

144 146

144 146

Le mot-clé super Héritage et constructeurs

• Pour manipuler un attribut de la super-classe: super.nom

• Pour manipuler une méthode de la super-classe:


super.calculerSalaire()

• Pour faire appel au constructeur surchargé de la super-classe:


super(nom, prenom)

• super() fait appel au constructeur par défaut de la classe mère

145 147

145 147
20/11/2023

Héritage et constructeurs Redéfinition des méthodes

Exemple:

• La classe fille peut redéfinir


une méthode: changer son
implémentation tout en
gardant la même signature.

• Par exemple, on garde la même


signature de la méthode lire et
Erreur à la compilation lors on change le corps.
de l’exécution de super()

150

148 150

Héritage et constructeurs Redéfinition des méthodes

Sol1: Déclarer explicitement le Sol2: faire un appel explicite au


constructeur par défaut de la classe constructeur surchargé de la classe
Animal Animal

Possibilité de réutiliser le
code de la méthode
héritée (super)

L’étudiant possède qu’une


seule méthode

151

149 151
20/11/2023

Surcharge des méthodes Le mot-clé final

Empêcher la redéfinition :

• La classe fille peut surcharger


une méthode: ajouter un • Une classe peut protéger une méthode afin d'éviter qu'elle ne
comportement en gardant le soit redéfinie dans ses sous-classes.
même nom et pas la même
• On ajoute le modificateur final dans la signature de la
signature ( paramètres)
méthode : public final void lire()
• Par exemple, on change les
paramètres d’entrée de la
méthode lire (String),

152 154

152 154

Surcharge des méthodes Le mot-clé final

Empêcher l’héritage:

• L’etudiant possède deux


méthodes: • Une classe déclarée final ne peut pas être dérivée :
lire() final class Personne
lire(String) • 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

153

153 155

Vous aimerez peut-être aussi