[java] Atribut de methode

Résolu
kkwet -  
 kkwet -
Bonjour,

Je voudrait savoir si il est possible en JAVA de donner une valeur par defaut aux attribut d'une methode (de sorte à pouvoir appelé la même fonction avec plus ou moins d'attribut)

Voici l'entete de ma fonction :
public boolean ajoutArc(int i,int j,int cap,int flot){...}

je voudrait pouvoir faire :
a.ajoutArc(i,j,cap) //ici ça ferais appelle a ajoutArc avec flot=0
b.ajoutArc(i,j,cap,flot)

sans ecrire deux methode de ajoutArc (pour evité la surcharge)

Mon idée etait de faire ainsi :
public boolean ajoutArc(int i,int j,int cap,int flot=0){...}
mais apparament ce n'est pas possible en JAVA.

Pourriez vous eclairais ma lanterne?
A voir également:

6 réponses

kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
Bonjour,

Toi tu as fait du C++ ^^

En java malheureusement tu ne peux pas mettre une valeur par défaut d'un paramètre directement dans la 'définition' de la fonction (i.e. 'public void truc ( String myStr = "toto" ){ ... }'). Tu ne peux pas non plus appeller un méthode sans ses arguments.

Si tu veux pouvoir appeller un traitement de différente manière, il te faudra definir des fonctions avec plus ou moins d'argument.
C'est le même principe que les constructeurs de classe, lorsque tu veux pouvoir instancier un objet de plusieur facon, tu as toujours un constructeur basic, puis d'autres qui prennent plus ou moins de paramètre en entête.
0
kkwet
 
oki

donc je suis obligé de faire deus méthode.
ajoutArc(int i, int j, int val) {...}
ajoutArc(int i, int j, int val, int flo) {...}

ça ne possera pas de probleme?
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
Ca ne posera aucun problem, tu peux d'ailleurs, si le comportement de tes deux méthodes est la même, invoquer ta premiere dans la deuxieme.

Ex :
public void affiche ( String str ){
       System.out.println(str);
}

public void affiche ( String str, String str2 ){
       System.out.println(str2);
       affiche(str);
}



Ca te permet de cette facon de cinder ton code, si tu en a l'utilité bien sur.
0
kkwet
 
Bonjour,

Si j'écris :

public boolean ajoutArc(int i,int j,int cap,int flot){
...
}

public boolean ajoutArc(int i,int j,int cap){
ajoutArc(i,j,cap,o);
}


ça fonctionne?
pas besoin de metre this.ajoutArc(i,j,cap,0)?
0

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

Posez votre question
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
Ca fonctionne, par contre il te faut gérer le retour de ajoutArc(i,j,cap,o) sinon c'est inutile ^^

Mais plutot que demander si ca fonctionne, autant le tester toi même, tu verra bien si c'est bon ou pas ;)
0
kkwet
 
Bonjour,

C'est bon ça fonctionne, j'ai reglé le type de retour en faisant :

public boolean ajoutArc(int i,int j,int cap){
return ajoutArc(i,j,cap,o);
}

J'ai plus de 380 ligne à testé avant de commancer le vrai sujet ... ^^

En tout cas Merci
0