DissertationsEnLigne.com - Dissertations gratuites, mémoires, discours et notes de recherche
Recherche

Heritage

Compte Rendu : Heritage. Rechercher de 53 000+ Dissertation Gratuites et Mémoires
Page 1 sur 8

public class Salarie extends Travailleur{ private float salaire; // + toutes les methodes specifiques } public class Independant extends Travailleur{ private float chiffreAffaires; private int nbreSalaries; // + toutes les methodes specifiques } H´ritage e H´riter, c’est ´tendre une classe e e – ajouter des informations sp´cifiques e – sp´cialiser une classe ` partir d’une autre e a L’arbre de la relation d’h´ritage e – La relation d’h´ritage forme un arbre sur les classes. e – Toute classe qui n’h´rite pas explicitement d’une autre classe (la classe e Personne. . .) h´rite de la classe Object. e – La classe Object est la racine de cet arbre. L’arbre d’h´ritage e Soit une classe B qui h´rite d’une classe A. e On dira que A est la classe m`re, ou super-classe, et B la classe fille, ou e sous-classe. – Toute instance de B est une instance de A. – Toute instance de B poss`de tous les membres de A plus les membres e d´finis dans B. e – Au niveau de la classe, tous les membres statiques de A sont des membres statiques de B (et B poss`de en plus les membres statiques d´finis dans e e B). – On peut red´finir dans B les m´thodes de A. e e

2

Accessibilit´ des membres e

L’acc`s aux membres d’une classe e – Toute instance d’Etudiant est une instance de Personne. – Donc toute instance d’Etudiant a un nom et un prenom. – Pourtant, une instance d’Etudiant ne peut pas acc´der directement ` son e a nom et son prenom. 3

L’acc`s aux membres d’une classe e public class Etudiant extends Personne { public changeTonNom(String surnom){ this.nom = surnom; } } Erreur a la compilation ! ! ` L’acc`s aux membres d’une classe e Rappel : On ne peut acc´der ` un attribut private que depuis l’int´rieur e a e de la classe o` il est d´fini. u e Par contre public class Etudiant extends Personne { public String cEstQuoiTonNom(){ return this.getNom(); } } L’acc`s aux membres d’une classe e Conclusion : Une instance d’une sous-classe ne peut pas acc´der directement aux membres e priv´s de ses super-classes. e L’acc`s ne peut se faire que via des m´thodes public ou protected (ou e e

package suivant la localisation de la sous-classe).

L’attribut d’acc`s protected e L’attribut d’acc`s protected permet : e – aux classes du mˆme package e – aux sous-classes (qu’elles soient dans le mˆme package ou dans un autre) e d’acc´der aux membres d’une classe. e protected est un niveau de visibilit´ entre package et public. e

3

La red´finition de m´thodes e e

La red´finition de m´thodes e e On peut d´finir dans une classe une m´thode avec exactement la mˆme e e e signature que dans une de ses super-classes. C’est ce qu’on appelle la red´finition e de m´thodes. e Exemples : – – traditionnellement, les m´thodes String toString() et boolean equals(Object e o) de la classe Object sont red´finies. e

4

La classe Object La classe Object contient : – le constructeur Object() – les m´thodes : e – boolean equals(Object obj) – String toString() – Class getClass() – int hashCode() La red´finition de m´thodes e e – permet d’adapter le comportement aux sp´cificit´s de la sous-classe e e – n’augmente pas les possibilit´s de la classe par rapport ` ses super-classes e a – mais sp´cialise son comportement e Exemple public class Complexe implements IComplexe { private float im; private float re; ... public float im(){ return im; } ... public IComplexe add(IComplexe c){ im += c.im(); re += c.re(); return this; } ... }

Exemple public class ComplexeNM extends Complexe { ... public IComplexe add(IComplexe c){ return new ComplexeNM(re()+c.re(), im()+c.im()); } }

5

La red´finition de m´thodes e e On peut faire appel au code de sa super-classe par le mot-cl´ super. Exemple : e public class Etudiant extends Personne { public String toString(){ return (super.toString()+" inscrit en " +formation+" a "+universite); } } La red´finition de m´thodes e e Imp´ratif : On doit respecter la signature de la m´thode qu’on red´finit ! e e e – ses param`tres (nombre, type, ordre) e – son type de retour – son attribut d’accessibilit´ : on peut ´largir son acc`s. e e e Une m´thode package peut ˆtre red´finie en une m´thode public. e e e e Une m´thode public ne peut pas devenir private dans une sous-classe. e La red´finition de m´thodes e e public class A { public void toto(){} } public class B extends A { private void toto(){} // impossible !! // erreur a la compilation !! } Soit b une instance de B, comme toute instance de B est une instance de A, on doit toujours pouvoir faire b.toto() !

4

Les constructeurs

Les constructeurs – Toute instance d’Etudiant est une instance de Personne. – Toute instance de Personne est une instance d’Object. – Lorsqu’on construit une instance d’Etudiant, cette instance se construit d’abord comme une instance de Personne, qui se construit elle-mˆme e d’abord comme une instance d’Object. Tout constructeur d’une classe doit d’abord faire appel ` un constructeur de a sa super-classe. 6

Exemple public class Personne { public Personne(String nom, String prenom){ this.nom = nom; this.prenom = prenom; } } public class Etudiant extends Personne { private String formation; private String universite; public Etudiant(String nom, String prenom, String formation, String universite){ super(nom,prenom); this.formation = formation; this.universite = universite; } }

Les constructeurs – L’appel au constructeur de la super-classe doit ˆtre la premi`re instruction e e dans un constructeur ; – Il est obligatoirement explicite si la super-classe ne poss`de pas de construce teur sans param`tre. e – Il est implicite si la super-classe poss`de un constructeur sans param`tre. e e C’est le cas g´n´ral pour une classe qui h´rite directement de Object. e e e

5

Graphe de la relation de typage

Conversions de type supertype d’une classe A = l’ensemble des classes ”au-dessus” de A dans l’arborescence de la relation d’h´ritage + l’ensemble des interfaces que A impl´mente. e e Toute instance de A est une instance de tous les ´l´ments de son supertype. ee Pour les types objets comme pour les types primitifs, la conversion de type est possible si on respecte la r`gle d’´largissement du domaine. e e

7

Conversions de type Un objet o peut ˆtre affect´ ` une variable d’un type A si A est le type de o e ea ou fait partie du sur-type de o. Toute instance d’Etudiant est une instance de Personne, mais la r´ciproque e est fausse. Par contre, dans la suite du code, seuls les m´thodes et attributs accessibles e de A pourront ˆtre invoqu´s sur o. e e Exemple Personne etud = new Etudiant("Durand", "Paul", "Licence Informatique", "Universite d’Artois"); // OK System.out.println(etud.getFormation()); // refuse !! erreur a la compilation!! // getFormation() n’est pas // une methode de

...

Télécharger au format  txt (11.1 Kb)   pdf (130.4 Kb)   docx (9 Kb)  
Voir 7 pages de plus »
Uniquement disponible sur DissertationsEnLigne.com