Bonjour à tous , j'ai un code dont je ne comprends pas le résultat:
deux classes: Test_C et D (avec D extends Test_C)
chaque classe à une méthode f():
C.f() affiche seuleument la valeur de i
D.f() affiche la valeur de i et celle de j
dans la classe Run2 on :
Test_C c=new
D();
c.f();
regardons ce que moi j'ai compris:
on fait appel au constructeur de la classe fille, donc le compilateur appele d'abord
le constructeur de la classe mère, ce qui provoque l'affichage suivant:
i=0
ensuite dans cette classe Run2 on a appelé la méthode f() de la classe D(car l'objet c est une instance de D)
d'ou l'affichage :i=1,j=1
mais quand je compile ça me donne cette affichage:
i= 1,j= 0
i= 1,j= 1
pourquoi ça affiche la valeur de j=0(alors c'est la méthode C.f() n'affiche pas le "j"?
voici mon code:class Test_C {
private
inti=0;public Test_C() {i=1;f();}
public
void f(){System.
out.print("i= "+i);}
}//fin class Test_C
class
D extends Test_C{
privateintj=0;public D(){j=1;}
publicvoid f(){super.f();System.
out.println(",j= "+j);}
}//fin classe D
class
Run2 {publicstaticvoid main(String[] args) {Test_C c=
new D();c.f();
}
}///fin classe Run2
Merci pour votre aide.