Bonjour,
Tout d'abord, désolé pour le titre confus, je ne sais trop comment intituler correctement ce soucis...
Prenons l'exemple suivant :
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package test; public class ExtendsStaticTest { /** * @param args */ public static void main(String[] args) { B.foo(); A.getB().foo(); } }
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package test; public class A { protected static void foo() { System.out.println("bar"); } public static A getB() { return new B(); } }
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 package test; public class B extends A { protected static void foo() { System.out.println("barB"); } }
Selon moi, l'appel à A.getB() me retourne une instance de B, instance dont la classe hérite de A.
A.getB().foo() fait cependant appel à la méthode de la classe A...
Pourquoi et comment faire pour que ce soit la méthode B.foo() qui soit appelée ?
Le soucis réel caché derrière cet ECM est qu'au lieu d'avoir A.getB(), j'ai A.getUneClasse() dont le retour peut être soit une instance de A, soit une instance de B; où B s'agirait d'une classe surchargée par un utilisateur.
Avez vous des explications à me fournir sur ce comportement que je ne comprends pas ?
Merci![]()
Partager