Supposons :
Si une classe C étend à son tour la classe B et redéfinit aussi la méthode faire, on ne pourra pas, de la classe C, invoquer la méthode faire de la classe A. En effet, il est interdit d'écrire : super.super.faire();
Le programme (incomplet) ci-dessous montre l'utilisation du mot super.
class A {Question : Une classe A définit une méthode faire sans paramètre (void faire() {...}). Elle est étendue par une classe B qui définit une méthode faire avec un paramètre entier (void faire(int n) {...}. Est-ce qu'on utilise ainsi la possibilité de redéfinir une méthode ou celle de la surcharge ?
void faire(){
...
}
}
class B extends A {
void faire() {
super.faire();
...
}
void pourquoiPas() {
...
super.faire();
...
faire(); // autrement dit : this.faire(); } }
© Irène Charon Télécom ParisTech 2012