Heritage

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Heritage as PDF for free.

More details

  • Words: 898
  • Pages: 12
Le Langage HéritageJava

Page 1

Héritage et classe dérivée

n

L’héritage permet de créer une classe par extension ou spécialisation d’une classe existante.

n

Chaque niveau (classe) amène un complément ou une spécialisation des caractéristiques du niveau supérieur auquel il est rattaché.

n

Dès lors qu'une caractéristique (attribut ou méthode) est définie à un niveau elle reste valable pour tous les sous-niveaux affiliés.

n

Ce mécanisme est appelé l'héritage. En java, si une classe D hérite d'une classe B, la classe D est appelée classe dérivée et B classe de base.

n

Java ne supporte que de l’héritage simple.

copyright ©Thierry Douchet Janvier 2006

2

Une classe Personne

n

Une personne est définie par un nom , un prénom et un age.

n

Une personne a une méthode anniversaire() qui lui permet de changer d’age et une méthode afficher () qui affiche l’ensemble de ses attributs :

copyright ©Thierry Douchet Janvier 2006

3

Modélisation de l’héritage en UML

n

Nous voulons maintenant réaliser une classe Stagiaire. Un Stagiaire possède un nom , un prénom , un age et un cours.

n

Un Stagiaire est donc une personne qui suit un cours. Un Stagiaire hérite donc de la classe Personne :

copyright ©Thierry Douchet Janvier 2006

4

La classe Personne

class Personne { private String nom; private String prenom; private int age; public Personne () { nom ="" ; prenom = "" ; age = 0 ; } public Personne ( String _nom , String _prenom , int _age ) { nom = _nom ; prenom = _prenom ; age = _age ; } public String getNom () { return nom ; } public void setNom ( String _nom ) { nom = _nom ; } public void afficher() { System.out.println ( nom + " " + prenom + " " + age ); } public void anniversaire() { age++ ; } } copyright ©Thierry Douchet Janvier 2006

5

La classe Stagiaire

class Stagiaire extends Personne { private String cours;

// héritage en Java -> extends

public Stagiaire() { cours= "" ; } public Stagiaire( String _nom , String _prenom , int _age ,String _cours ) { super ( _nom , _prenom , _age ); // appel du constructeur de la classe de ba cours = _cours; } public String getCours () { return cours ; } public void setCours ( String _cours ) { cours = _cours ; } public void afficher () { super.afficher (); System.out.println ("Cours : cours" + cours ); } } copyright ©Thierry Douchet Janvier 2006

6

Commentaire

n

Un constructeur d’une classe dérivée doit toujours appeler un constructeur de sa classe de base.

n

L ’appel d’un constructeur s’effectue avec le mot clé « super » en fournissant les arguments nécessaire : super ( _nom , _prenom , _age );

n

L’appel peut être implicite, dans ce cas c’est le constructeur par défaut de la classe de base qui est appelé : public Stagiaire() { // super () ; est effectué de façon implicite. cours= "" ; }

n

On peut redéfinir une méthode de la classe de base si elle ne répond pas au exigence de la classe dérivée : méthode « afficher » copyright ©Thierry Douchet Janvier 2006

7

Exemple (suite)

class Demo { public static void main (String args [ ]) { Personne pers1; Stagiaire stag1; pers1 = new Personne ("Bond" , "james" , 7 ); stag1 = new Stagiaire ( "Jones" , "Indiana" , 31 , "java" ); pers1.afficher(); stag1.afficher(); pers1.anniversaire(); stag1.anniversaire(); } } n

On peut appliquer sur un objet l’ensemble des méthodes de sa hiérarchie.

copyright ©Thierry Douchet Janvier 2006

8

La classe dérivée "stagiaire" (suite)

n

Les caractéristiques héritées sont tributaires des attributs d'accès des membres de la classe de base.

n

Les membres privés de la classe "Personne" sont inaccessibles pour les méthodes de la classe "Stagiaire" : class Stagiaire extends Personne { public void afficher() { System.out.println ( nom + prenom + age + cours ) ; // erreur } }

n

Les membres publics de la classe "Personne" sont bien-sûr accessibles pour les méthodes de la classe "Stagiaire" : class Stagiaire extends Personne { public void afficher() { super.afficher(); System.out.println ("Cours : " , cours ) ; } } copyright ©Thierry Douchet Janvier 2006

9

L'attribut d'accès protected

n

L'attribut d'accès protected permet de concéder un droit d’accès pour les classes dérivées. class Personne { protected String nom; } class Stagiaire extends Personne { protected String cours; public void afficher() { System.out.println ( nom + cours); } }

n

Si le nom est « protected », on peut y accéder dans la classe dérivée.

copyright ©Thierry Douchet Janvier 2006

10

L’attribut protected

n

Un attribut protected reste inaccessible pour une instance d’une classe : class Demo { public static void main (String args [ ]) { Personne pers1; pers1 = new Personne ("Bond" , "james" , 7 ); pers1.nom = "Jones" ; // erreur nom est inaccessible pers1.afficher(); } }

copyright ©Thierry Douchet Janvier 2006

11

Le qualificatif final

n

Le qualificatif final peut être utilisé de différentes manières : u

appliqué aux attributs, il indique que le contenu ne doit pas évoluer (définition de constantes).

u

appliqué aux méthodes, il spécifie que la méthode ne pourra pas être redéfinie dans la classe dérivée.

u

appliqué aux classes, il indique qu’aucune classe ne pourra dériver de celle-ci.

copyright ©Thierry Douchet Janvier 2006

12

Related Documents

Heritage
November 2019 36
Heritage
May 2020 26
Heritage Answer
June 2020 9
Heritage Tourism
November 2019 27
Imagen Heritage
July 2019 31
Malayan Heritage
November 2019 18