Appel d'une méthode sur une classe avec héritage
Bonjour,
Tout d'abord, désolé pour le titre confus, je ne sais trop comment intituler correctement ce soucis...
Prenons l'exemple suivant :
Code:
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:
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:
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 :)