[java] Atribut de methode

Résolu/Fermé
kkwet - 2 nov. 2007 à 09:42
 kkwet - 2 nov. 2007 à 12:21
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 jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
2 nov. 2007 à 11:06
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
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 jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
2 nov. 2007 à 11:22
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
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 jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
2 nov. 2007 à 11:52
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
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