Bonjour,

Voici un petit exemple de ce qui me pose problème:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
class A {
   public void M1() { M2(); }
   public void M2() { }
}
 
class B extends A {
   public void M1() { super.M1(); }
   public void M2() { super.M2(); }
}
 
B b=new B();
b.M1();
A partir de là je ne comprends pas ce qui se passe.
En trace je vois que la séquence d'appel est

Code : Sélectionner tout - Visualiser dans une fenêtre à part
B-M1() -> A-M1() -> A-M2()
Je me serais attendu à avoir:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
B-M1() -> A-M1() -> B-M2() -> A-M2()
Quelqu'un peut me dire pourquoi est-ce que la méthode M2() de la classe B n'est pas appellée et comment faire pour qu'elle le soit ?

Merci,

Laurent