Vous êtes sur la page 1sur 16

La programmation orienté objet et Java

Chapitre 3 :

Chapitre 3 :

H é ritage en Java

H é ritage en Java

3 : Chapitre 3 : H é ritage en Java H é ritage en Java 

Enseignant : Heni Saber

Auditoire : LF2 IG

Plan du chapitre :

Introduction

L'héritage

La polymorphisme

Les classes abstraites

Les interfaces

Introduction

Dans le chapitre précédent on a vu, la syntaxe de base de java et la notion des classe et des objets … etc.

, vous allez voir, au fil de la partie suivante, que la programmation orientée objet offre tout un éventail de possibilités. L'une des plus importantes n'est autre que la notion d'héritage.

Normalement, vous pouvez désormais créer et gérer des objets

L'héritage

La notion d'héritage est l'un des fondements de la programmation orientée objet. Grâce à elle, nous pourrons créer des classes héritées (appelées aussi classes dérivées) de nos classes mères (appelées aussi classes de base).

Nous pourrons créer autant de classes dérivées, par rapport à notre classe de base, que nous le souhaitons. Nous pourrons aussi nous servir d'une classe dérivée comme d'une classe de base pour créer une autre classe dérivée

Le mot-clé extends

Pour des raisons de faciliter la programmation et éleminer la redondance. Il est conseillé d'utiliser cette primitive fournie par java (L'héritage)

Sur le champs pratique l'héritage se manifeste par le mot extends. Exemple :

Public class Personne

{

}

Private int cin; Private String nom;

Private String prenom; Public Personne (int cin, String nom, String prenom)

{

}

this.cin = cin; this.nom = nom; this.prenom = prenom;

Le mot-clé extends

Public class Employe extends Personne

{

private int cnss; Private String status;

Public Employe (int cin, String nom, String prenom, int cnss, String status)

{

}

super (cin, nom, prenom); this.cnss = cnss; this.status = status;

}

Public class Client extends Personne

{

private int numCli;

Public Client (int cin, String nom, String prenom, int numCli)

}

{

}

super (cin, nom, prenom); this.numCli = numCli;

Le mot-clé extends

A titre de remarque, l'héritage multiple est interdit en java donc, il est impossible d'écrire en java une classe comme suit :

Public class Employe extends Personne, Client

{

private int cnss; Private String status;

Public Employe (int cin, String nom, String prenom, int cnss, String status)

}

{

}

super (cin, nom, prenom); this.cnss = cnss; this.status = status;

Le mot_clé super

Dans l'exemple précédent, on remarque que le mot super est utilisé pour invoquer le constructeur d'une classe mère :

Public class Employe extends Personne

{

private int cnss; Private String status;

Public Employe (int cin, String nom, String prenom, int cnss, String status)

}

{

}

super (cin, nom, prenom); this.cnss = cnss; this.status = status;

Le mot_clé super

Une autre utilsation du mot clé super est possible pour invoquer un attribut ou une méthode de la classe mère ou dite aussi classe de base :

Public class Employe extends Personne

{ private int cnss; Private String status;

Public Employe (int cin, String nom, String prenom, int cnss, String status)

{

}

}

Cours : POO & Java

super.cin = cin; super.nom = nom; super.prenom = prenom; this.cnss = cnss; this.status = status;

Enseignant : Heni Saber

9

Le mot-clé protected

L'appel des attribut privés de la classe personne par la classe dérivée Employe provoquera une erreur lors de la compilation du programme.

Comme on a dit précédemment, un attribut ou une méthode privée n'est visible que dans la classe ou elle a vu le jour.

La solution procuré par java est de déclarer les attribut et les méthode qu'on désire utiliser dans les classe dérivé, avec le mot- clé protectedprotected.

La polymorphisme

Une méthode surchargée a des paramètres que la méthode de base n'a pas, ou a le même nombre de paramètres, mais de types différents

Une méthode polymorphe a un squelette identique à celle de base, mais un traitement différent. Celle-ci fait référence à une autre classe et donc, par extension, à une autre instance de cette classe.

AttentionAttention àà nene paspas confondreconfondre lala surchargesurcharge dede méthodeméthode avecavec uneune méthodeméthode polymorphe.polymorphe.

La polymorphisme

Si on ajout une méthode « coordonnées » comme qui suit à la classe de base Personne et on la redéfinit dans la classe employé, alors, cette méthode est dite polymorphe.

PublicPublic classclass PersonnePersonne

{ Protected int cin; Protected String nom; Protected String prenom;

Public Personne (int cin, String nom, String prenom)

{

this.cin = cin; this.nom = nom; this.prenom = prenom;

}

Protected String coordonnées ()

{ return " CIN : "+this.cin+ "\n Nom : "+this.nom+"\n Prénom :

}}

} Cours : POO & Java

"+this.prenom;

Enseignant : Heni Saber

12

La polymorphisme

ppublic class Employe extends Personne

{

private int cnss; private String status;

 

public Employe (int cin, String nom, String prenom, int cnss, String status)

{

super (cin, nom, prenom); this.cnss = cnss; this.status = status;

}

protected String coordonnées ()

{

return

super.coordonnées()+"\n CNSS : "+this.cnss+"\n Status :

 

"+this.status;

 

}}

}

Le mot-clé final

Dans certains cas, on est obligé de restreindre l'héritage de certaines classes. Cela est possible à l'aide du mot-clé final.final.

Alors, une classe déclaré avec le mot final est une classe finale qui ne peut jamais avoir des filles.

Et, une méthode déclaré avec le mot clé final est une méthode finale qu'on ne peut pas la redéfinir dans les classes filles.

Bilan

Une classe hérite d'une autre classe par le biais du mot clé extends.

Une classe ne peut hériter que d'une seule et unique classe !

La classe fille hérite de toutes les propriétés et méthodes public et protected de la classe mère.

Les méthodes et propriétés private d'une classe mère ne sont pas accessibles dans la classe fille.

On peut redéfinir (changer tout le code) d'une méthode héritée.

On peut utiliser le polymorphisme sur une méthode par le biais du mot clé super.

Bilan

Le polymorphisme permet, entre autres, d'ajouter des traitements spécifiques à une méthode en continuant d'utiliser les traitements déjà définis (utilisation de super).

Si une méthode d'une classe mère n'est pas redéfinie ou polymorphée, à l'appel de cette méthode par le biais d'un objet enfant, c'est la méthode de la classe mère qui sera appelée !

Vous ne pouvez pas hériter d'une classe déclarée final.

Une méthode déclarée final est non redéfinissable.