
Héritage : redéfinition et attachement dynamique
La redéfinition est
articulièrement intéressante
uand elle est utilisée avec la
notion d’attachement dynamique / Polymorphisme
L’attachement dynamique (mécanisme implicite de Java) permet à la JVM de choisir la
bonne méthode en fonction du type réel (de la classe) de l'objet appelant
public class Employe extends Personne {
private int _salaire;
public class Personne {
private int _age;
…
public Employe (Personne p, int salaire) {
super(p);
pr
vate
tr
ng _nom;
…
public Personne (Personne p) {
=
}
public String type() {
return "Em
lo
e";
_
_nom=p._nom;
}
public String type() {
}
public static void main(String[] args){
Personne p1=new Personne(29, "toto");
}
…
}
type de e2 : Employe
type de p1 : Personne
irisa.fr
mp
oye e
=new
mp
oye
p
,
;
Personne p3=e2;
System.out.println("type de e2 : "+e2.type());
"
"
ype
e p
:
mp
oye
@
Obj pers
p1: Réf sur Pers.
eric.anquetil
69
.
.
.
System.out.println("type de p3 : "+p3.type());
…
}
Obj emp
@
@p3: Réf sur Pers.
e2: Réf sur Empl.
Héritage : exemple d'exploitation de l’attachement dynamique
Utilisation d'un tableau de <Personne>
Nb: les <Employe> sont aussi des <Personne>
On met dans le tableau des objets de type <Employe> et <Personne>
L’attachement dynamique permet de manipuler les éléments du tableau de personnes
en fonction de leur classe !
public class Employe extends Personne {
private int _salaire;
…
public String type() {
return "Employe";
pu
c c
ass
ersonne
private int _age;
private String _nom;
public static void main(String[] args){
Personne p1=new Personne(29, "toto");
Personne p2=new Personne(27, "tata");
public int age(){return _age;}
public String nom(){return _nom;}
Employe e1=new Employe(29, "titi",7000);
Personne[] tabPers= new Personne[3];
tabPers[0]=p1;
public String type() {
return "Personne";
}
irisa.fr
a
ers
=p
;
tabPers[2]=e1;
for (int i=0; i< tabPers.length; i++) {
"
"
…
}
Personne : toto : 29 / type = Personne
eric.anquetil
70
.
.
+ tabPers[i].type() );
}…
}
Personne : tata : 27 / type = Personne
Employe : titi : 29 / 7000 / type = Employe