[java] Atribut de methode

Résolu
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?
Configuration: Windows XP
Firefox 2.0.0.8
JCreator 4.00.025

6 réponses

  1. Contributeur
    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.
    1. 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?
      1. Contributeur
        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.
        1. 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)?
          1. Contributeur
            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 ;)
            1. 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