 
     
 
     
 
     
 
     
      
 
     
 
     
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 {
  void faire(){
      ...
    }
}
class B extends A {
  void faire() {
	super.faire();
      	...
    }
  void pourquoiPas() { 	
      	...
      	super.faire();
      	...
	faire(); // autrement dit : this.faire();
   }
}
 
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 ? 
© Irène Charon Télécom ParisTech 2012