Académique Documents
Professionnel Documents
Culture Documents
Samira Haguouche
Le concept dhritage
Intrt de lhritage
Vision descendante => la possibilit de rutiliser
public class TstPcol1{ public static void main (String args[]){ Pointcol pc = new Pointcol() ; pc.affiche() ; pc.initialise (3, 5) ; pc.colorer ((byte)3) ; pc.affiche() ; pc.deplace (2, -1) ; pc.affiche() ; Point p = new Point() ; p.initialise (6, 9) ; p.affiche() ;
}}
Un objet dune classe drive accde ses propres mthodes comme il accde aux mthodes publics et protected de sa classe de base.
7
public void afficheCol (){ affiche() ; System.out.println (" et ma couleur est : " + couleur) ; } Lappel affiche() dans la mthode afficheCol() est quivalent : this.affiche()
9
accessible partir de la classe drive. Une clase drive hrite aussi des membre privs, mais on ne peut y accder partir de la Exercice :drive. classe Complter limplmentation de classe PointCol drive de la classe Point qui a deux mthodes afficheCol() et initialiseCol()
10
class Pointcol extends Point{ private byte couleur ; public Pointcol (int x, int y, byte couleur) { ......... } }
11
this.couleur = couleur ; }
Rgle : Si un constructeur dune classe drive appelle un constructeur dune classe de base, il doit obligatoirement sagir de la premire instruction du constructeur et ce dernier est dsign par le mot-cl super.
12
(aussi bien ceux hrits de A, que ceux propres B) aux valeurs "nulles".
3. Initialisation explicite, sil y a lieu, des champs
hrits de A.
4. Excution du corps du constructeur de A. 5. Initialisation explicite, sil y a lieu, des champs
propres B.
16
Drivations successives
17
Rq :Contrairement C++, Java ne dispose pas dhritage multiple, notion gnralement dlicate manipuler. Java dispose en revanche de la notion dinterface, qui offre des possibilits proches de celles de lhritage multiple, sans en prsenter les inconvnients.
mthode de sa classe de base, en proposant une nouvelle dfinition. Cest alors cette nouvelle mthode qui sera appele sur tout objet de la classe drive, masquant la mthode de la classe de base.
18
public void affiche(){ super.affiche() ; // appel de la methode affiche de la superclasse System.out.println (" et ma couleur est " + couleur) ; }
Surcharge et hritage
En Java, une classe drive peut surcharger une mthode dune classe de base (ou, plus gnralement, dune classe ascendante).
19
Surcharge et hritage
class A { public void f (int n) { ..... } .....} class B extends A { public void f (float x) { ..... } .....} Aa;Bb; int n ; float x ; ..... a.f(n) ; // appelle f (int) de A a.f(x) ; // erreur de compilation : une seule methode acceptable (f(int) de A b.f(n) ; // appelle f (int) de A b.f(x) ; // appelle f(float) de B
20
21
22
La class Object
il existe une classe nomme Object dont drive implicitement toute classe simple. Ainsi, lorsque vous dfinissez une classe Point de cette manire : class Point{ ..... } Tout se passe comme si vous aviez crit class Point extends Object{ ..... }
24
Le polymorphisme
Il permet de manipuler des objets sans en connatre (tout fait) le type.
25
Le polymorphisme
Le polymorphisme en Java se traduit par : Compatibilit par affectation entre un type classe et un type ascendant. Un point color est aussi un point, on peut donc bien le traiter comme un point, la rciproque tant bien sr fausse.
Ligature dynamique des mthodes : la capacit de
26
Application
Ecrire un programme dans lequel exploiter les possibilits de polymorphisme pour crer un tableau "htrogne" dobjets: un tableau de 4 objet : 2 de type Point et 2 de type PoinCol. Faire une boucle pour laffichage
27
29
la nouvelle mthode peut maintenant renvoyer une valeur dun type identique ou driv de celui de la mthode quelle redfinit.