... 
Fin
Le programme obj10 crée deux objets et donne l’affichage suivant : 
Je suis A 
Je suis B
Pour appeler explicitement le constructeur de A depuis B, vous devez le faire explicitement au sein du constructeur de 
B via le mot­clé super. Celui­ci remplaçant l’objet superclasse, il s’utilise comme un objet. Modifiez le constructeur de B 
ainsi : 
Classe B hérite de A 
... 
Constructeur B() 
Début 
super() 
Afficher "Je suis B" 
Fin 
... 
FinClasse
Vous obtenez en relançant obj10 le résultat suivant : 
Je suis A
Je suis A 
Je suis B
Une nouvelle ligne correspondant à l’appel du constructeur de A depuis B est affichée. Là encore, en cas d’héritage 
en cascade, vous devez appeler les constructeurs en cascade. 
Il  faut  bien  comprendre  pourquoi  l’appel  au  constructeur  de  la  superclasse  n’est  pas  automatique :  rien  ne  vous 
empêche au sein du constructeur de la classe dérivée d’initialiser les attributs de la superclasse directement, puisque 
sauf  si  ceux­ci  sont  privés,  vous  y  avez  accès  directement.  L’appel  implicite  au  constructeur  de  la  superclasse 
risquerait de faire double emploi ou d’écraser vos valeurs. 
2. Les destructeurs 
Tout comme le constructeur est appelé à la création d’un objet, le destructeur est appelé quand l’objet est détruit, ou 
l’allocation dynamique libérée. Tous les langages ne proposent pas de destructeurs, notamment Java, mais proposent 
parfois des méthodes particulières appelées automatiquement quand l’objet n’est plus utilisé (sortie de fonction quand 
l’objet est local, remise à NIL de sa valeur, etc). 
Le destructeur est rarement employé en algorithmique car les professeurs l’enseignant ont souvent le langage Java à 
l’esprit  comme  langage  d’implémentation,  et  pas  le  C++  par  exemple.  Pourtant  il  peut  être  important  dans  des 
langages  où  l’allocation  de  la  mémoire  est  dynamique.  Un  attribut  d’un  objet  peut  être  un  pointeur  alloué 
dynamiquement. Quand vous n’avez plus besoin de l’objet et que vous le libérez, que se passe­t­il pour ce pointeur ? Il 
faut libérer aussi la zone allouée. 
Le destructeur ressemble beaucoup au constructeur, sauf que : 
q Il n’y a qu’un seul destructeur. 
q Il ne prend pas de paramètres. 
q Son nom est composé d’un tilde suivi du nom de la classe. 
q Vous le faites précéder du mot Destructeur. 
Il  dispose  des  mêmes  propriétés  pour  les  classes  dérivées.  Vous  devez  éventuellement  l’appeler  vous­même,  en 
cascade. 
Classe B hérite de A 
... 
Constructeur B() 
Destructeur ~B() 
- 3 -
© ENI Editions - All rigths reserved - Jonifar lina
210
Précédent

- 210/220

Suivant