Java

Résolu
cs_limalima Messages postés 124 Date d'inscription dimanche 31 août 2008 Statut Membre Dernière intervention 16 décembre 2010 - 1 mai 2009 à 23:07
 Utilisateur anonyme - 4 mai 2009 à 11:39
J'ai prélevé ce code sur un sujet de la certificatio sun,

--------------------------------------------------------
class

NoGo{

int
i= 0;
NoGo(){ add(1);
System.
out .println(
i);
}

void add(
int v){

i =
i+v;
}

void print(){System.out.println(i);

}
}

-----------------------------------------------------------------------------------
class

Extension
extends NoGo{
Extension(){
add(2);
}

void add(
int v){

i=
i+v*2;
}
}

--------------------------------------------------------------------------------

public

class TestNoGo {

 public
static
void main(String[] args) {

bogo
(new Extension());}

static
void

bogo(NoGo b){
b.add(8);
b.print();
}

}-----------------------------------------------------------------------------------
alors ici, l'affichage est 22, je ne comprends pas pourquoi!!
car si on regarde la classe TestNoGo,
on new Extension():mais c'est d'abord le constructeur de la classe mere(NoGo)qui sera executer et donc
la methode add(1) et du coup i vaut 1.
vient ensuite le constructeur fille(Extension) et la methode add(2) est appelée et i vaut alors 5
 et a lfin la methde bogo() est appelée et a son tour appelle la methde add(8) de la classe Extension et i vaut alors 21

j'espère que j'été claire et que vous m'expliqueriez, merci

1 réponse

Utilisateur anonyme
4 mai 2009 à 11:39
Bonjour

C'est toujours la méthode add de la classe Extension qui est appelée. Du coup, le premier appel à la méthode add ajoute 2 et non 1. Bon courage.

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
3
Rejoignez-nous