Académique Documents
Professionnel Documents
Culture Documents
Chapitre 1 Introduction
Chapitre 2 Objets et Classes
Chapitre 3 Encapsulation et Surcharge
Chapitre 4 Héritage et Polymorphisme
Chapitre 5 Classes abstraites et Interfaces
Chapi
Chapitre 6 Les collections
tre 5
Chapitre 7 Les exceptions
I. La notion d’héritage
L'intérêt de l'héritage
Le concept de l’héritage
Maîtriser la notion de redéfinition
Problèmes:
Duplication du code
Une modification faite sur un attribut (ou méthode) commun doit être
refaite dans les autres classes.
Etudiant Enseignant
Note1 , Note2
Classe dérivée salaire Classe dérivée
Moyenne() Salaire()
•La classe mère contient tous les attributs et toutes les méthodes communs
à toutes les classes.
•La classe fille (classe dérivée ) hérite des méthodes et des attributs de sa
classe mère
•Les classes filles ne comportent que les attributs ou méthodes plus
spécifiques.
class Personne {
String nom; class Etudiant extends Personne {
int cin, anneeNaiss; float note1,note2;
int age() public float moyenne ()
{ { return ((note1+note2)/2);
return 2023- Anneenais; }
} }
Enseignant
salaire
Salaire()
18/09/2023 POO 2eme SI 8
Concept d’héritage
moyennefinale()
18/09/2023 POO 2eme SI 9
Héritage et encapsulation
•Constructeur paramétré
class Personne { String nom; class Etudiant extends Personne {
int cin, anneeNaiss; float note1,note2;
public Personne(String n, int c , int a) Public Etudiant(String n, int c , int a, float
{ n1, float n2)
this.nom=n; {
this.cin=c; super(n, c, a);
this. anneeNaiss=a; note1=n1; super fait appel
} note2=n2; au constructeur
int age() } paramétré de la
{ public float moyenne () classe mère
return 2023- Anneenais; { return ((note1+note2)/2);
} }}
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.
• En Java, on va simplement ajouter le modificateur final dans la
signature de la méthode.
public final void affiche()
Empêcher l’héritage
• Une classe déclarée final ne peut pas être dérivée
– 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.
final class Personne
18/09/2023 POO 2eme SI 15
La classe Object
• La méthode afficher() est décrite dans la classe Forme et dans la classe Cercle
• Cette double définition ne correspond pas à une véritable surcharge de fonction
• Les deux méthodes afficher() sont définies sans aucun paramètre
• Le choix de la méthode ne peut donc s’effectuer sur la différence de paramètres .
• Il est effectuée par rapport à l’objet sur lequel la méthode est appliquée
Exemple:
Exemple:
-Déclarer un tableau de type Animal.
-Le tableau contient des objets de type Animal
La méthode giveShot() de la classe Veterinaire peut prendre n’importe quel Animal tant que
l’objet passé en paramètre est une classe fille de Animal.
(la méthode makeNoise() doit être implémentée dans les classes Cat et dog.
Exemple
• Soit C la classe réelle d'un objet o à qui on envoie un message "o.m()"
• Exemple:
Carre
• On considère que r est en fait un objet Carre même s'il est dans une
variable de type Rectangle
• Il faut dans ce cas un transtypage explicite
• Il faut vérifier à l‘exécution que cette conversion est possible
• Cette conversion n'est jamais implicite (on ne transforme jamais un
Rectangle en Carre sans prendre des précautions