next up previous contents index
suivant: Évaluation d'une invocation monter: Liaison tardive précédent: Liaison tardive   Table des matières   Index


Spécialisation d'une classe par redéfinition

Une méthode n'est pas héritée si elle est redéfinie dans la classe dérivée, avec le même type de retour et le même profil. Par exemple, la classe PointImmobile suivante redéfinit la méthode translater de profil (double, double), de sorte qu'elle ne translate pas sa cible :

class PointImmobile extends Point {
  PointImmobile(double x, double y) {
    super(x, y);
  }
  void translater(double dx, double dy) {}
}

Le mécanisme d'extension permet à la fois d'enrichir une classe en lui ajoutant des membres, et de la spécialiser, par redéfinition de certaines méthodes, pour en modifier le comportement. Le mécanisme de liaison tardive permet de tirer parti de ces redéfinitions.

Signalons que la redéfinition d'une méthode peut invoquer la méthode de la classe parente à l'aide du nom super. Plus généralement, il permet d'accéder aux membres (champs ou méthodes) définis dans la classe parente, même s'ils sont masqués ou redéfinis dans la classe contenant cette utilisation de super ; ce serait le cas si nous avions redéfini translater ainsi :

  void translater(double dx, double dy) {
    super.translater(0, 0);
  }


next up previous contents index
suivant: Évaluation d'une invocation monter: Liaison tardive précédent: Liaison tardive   Table des matières   Index
Rene' LALEMENT 2002-11-07