Héritage et constructeur
255
méthode affiche { écrire «Je suis en », x, « », y }
entier abs, ord
}
classe Pointcol dériveDe Point
{ méthode colore (entier c)
{ couleur := c }
méthode affichec
{ affiche()
écrire « et ma couleur est : », couleur
}
méthode Pointcol (entier x, entier y, entier c)
{ base (x, y)
couleur := c
}
entier couleur
}
Pointcol pc1, pc2
pc1 := Création Pointcol
pc1.initialise (3, 5) ; pc1.colore (3)
pc1.affiche
// attention, ici affiche
pc1.affichec
// et ici affichec
pc2 := Création Pointcol
pc2.initialisec(5, 8, 2)
pc2.affichec
pc2.deplace (1, -3)
pc2.affichec
Je suis en 3 5
Je suis en 3 5
et ma couleur est : 3
Je suis en 5 8
et ma couleur est : 2
Je suis en 6 5
et ma couleur est : 2
Appel du constructeur d’une classe de base dans une classe dérivée
Remarques
1 Avec nos hypothèses (prise en charge de la totalité de la construction de l’objet dérivé par
son constructeur), si Pointcol ne disposait d’aucun constructeur, aucun constructeur de
Point ne se trouverait appelé. On notera qu’ici, on s’y attend puisqu’on ne voit pas comment on pourrait fournir des paramètres au constructeur de Point. Les choses seraient
toutefois moins évidentes si Point disposait d’un constructeur sans paramètre. Ici, toujours avec nos hypothèses, ce constructeur ne pourrait pas non plus être appelé. Rappelons qu’il ne s’agit que d’une hypothèse qui se trouvera vérifiée dans certains langages et
pas dans d’autres (certains pouvant prévoir l’appel automatique d’un constructeur sans
paramètre).
255
méthode affiche { écrire «Je suis en », x, « », y }
entier abs, ord
}
classe Pointcol dériveDe Point
{ méthode colore (entier c)
{ couleur := c }
méthode affichec
{ affiche()
écrire « et ma couleur est : », couleur
}
méthode Pointcol (entier x, entier y, entier c)
{ base (x, y)
couleur := c
}
entier couleur
}
Pointcol pc1, pc2
pc1 := Création Pointcol
pc1.initialise (3, 5) ; pc1.colore (3)
pc1.affiche
// attention, ici affiche
pc1.affichec
// et ici affichec
pc2 := Création Pointcol
pc2.initialisec(5, 8, 2)
pc2.affichec
pc2.deplace (1, -3)
pc2.affichec
Je suis en 3 5
Je suis en 3 5
et ma couleur est : 3
Je suis en 5 8
et ma couleur est : 2
Je suis en 6 5
et ma couleur est : 2
Appel du constructeur d’une classe de base dans une classe dérivée
Remarques
1 Avec nos hypothèses (prise en charge de la totalité de la construction de l’objet dérivé par
son constructeur), si Pointcol ne disposait d’aucun constructeur, aucun constructeur de
Point ne se trouverait appelé. On notera qu’ici, on s’y attend puisqu’on ne voit pas comment on pourrait fournir des paramètres au constructeur de Point. Les choses seraient
toutefois moins évidentes si Point disposait d’un constructeur sans paramètre. Ici, toujours avec nos hypothèses, ce constructeur ne pourrait pas non plus être appelé. Rappelons qu’il ne s’agit que d’une hypothèse qui se trouvera vérifiée dans certains langages et
pas dans d’autres (certains pouvant prévoir l’appel automatique d’un constructeur sans
paramètre).
