[JAVA] Surcharge et redéfinition

moi.néo Messages postés 1135 Statut Membre -  
moi.néo Messages postés 1135 Statut Membre -
Salut.

J'ai un petit souci de compréhension avec la surcharge et la redéfinition en Java, avec les types réels et déclarés.

Soit le code suivant:

C c = new C() ;
A a = c;
B b = c;
Z z = new Z();
X x = z;
Y y = z;


Pourquoi les appels suivants provoquent l'affichage de "B::Y" ? :
b.f(z);
b.f(y);
a.f(z);
a.f(y);


class X{} ;
class Y extends X {...} ;
class Z extends Y{....}


public class A {
public void f(Y y) {System.out.println(“ A::Y”);}
}

public class B extends A {
public void f(Y y) {System.out.println(“ B::Y”);}
}

public class C extends B {
public void f(X x) {System.out.println(“ C::X”);}
public void f(Z z) {System.out.println(“ C::Z”);}
}


Merci d'avance.
A voir également:

5 réponses

garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   407
 
désolé j'ai pensé que tu demandai des réponses pour un dm
1
garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   407
 
ccm ne fait pas les devoirs des autres
0
moi.néo Messages postés 1135 Statut Membre 86
 
Avant de dire n'importe quoi, tu devrais prendre le temps de lire ma question -_-"
0
moi.néo Messages postés 1135 Statut Membre 86
 
Bon voilà comment j'aurais interprété b.f(z) :
Je pars du type réel de b (qui est C) et je cherche un service qui a comme signature "f(Z)". Il y en a un donc l'affichage serait "C::Z".
Mais quand je l'exécute, ça m'affiche "B::Y" !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
moi.néo Messages postés 1135 Statut Membre 86
 
up :(
0