Partage
  • Partager sur Facebook
  • Partager sur Twitter

accès au variable

Sujet résolu
    4 janvier 2009 à 15:42:57

    Bonjour, :) et bon dimanche

    je ne comprend pas la différence entre ces deux codes, le premier vient du site dont je suis le tuto de matéo21 sur le langage java. C'est la création d'une classe Capitale qui est une étendue de la classe Ville

    public class Capitale extends Ville {
     
             
            private String president;
             
             /**
              *Constructeur par défaut
              */
              public Capitale(){
                //Ce mot clé appelle le constructeur de la classe mère.  
                super();
                president = "aucun";
              }
              
              /**
               * Constructeur d'initialisation de capitale
               */
              public Capitale(String nom, int hab, String pays, String president){
              super(nom, hab, pays);
              this.president = president;
              }
             
              /**
               *Description d'une capitale
               */
               public String decrisToi(){
                  String str = super.decrisToi() + "\n \t ==>>" + this.president + " est son président";
                  return str;
               }
     
            /**
             * @return le nom du président
             */
            public String getPresident() {
                    return president;
            }
     
            /**
             * Définit le nom du président
             * @param president
             */
            public void setPresident(String president) {
                    this.president = president;
            }
            
    }
    


    j'ai enlevé les "this" et le code fonctionne quand même, pourquoi??? Voici mon code ===>

    public class Capitale extends Ville {
     
             
            private String president;
             
             /**
              *Constructeur par défaut
              */
              public Capitale(){
                //Ce mot clé appelle le constructeur de la classe mère.  
                super();
                president = "aucun";
              }
              
              /**
               * Constructeur d'initialisation de capitale
               */
              public Capitale(String nom, int hab, String pays, String presidents){
              super(nom, hab, pays);
              president = presidents;
              }
             
              /**
               *Description d'une capitale
               */
               public String decrisToi(){
                  String str = super.decrisToi() + "\n \t ==>>" + president + " est son président";
                  return str;
               }
     
            /**
             * @return le nom du président
             */
            public String getPresident() {
                    return president;
            }
     
            /**
             * Définit le nom du président
             * @param president
             */
            public void setPresident(String presidents) {
                 president = presidents;
            }
            
    }
    


    Merci d'avance pour vos explications... :)^^

    • Partager sur Facebook
    • Partager sur Twitter
      4 janvier 2009 à 15:59:06

      Bonjour,

      Tes deux exemples fonctionnent de la même façon car le compilateur Java cherche automatiquement si une variable de classe correspond au mon de la variable. Dans une grande majorité des cas le mot this est inutile mais voici un exemple où il est indispensable :
      class Tata
      {
          private String maVariable= "toto";
          
          private void setMaVariable(String maVariable)
          {
              this.maVariable= maVariable;
          }
      }
      

      Comme tu peux le remarquer, this.maVariable et maVariable sont deux variables différentes : une correspondant à la variable de classe et l'autre correspondant à l'argument de la méthode.

      Personnellement je mets toujours this dans mes codes Java, je trouve ça plus lisible même si c'est inutile.

      Une dernière chose, ce n'est pas M@téo21 l'auteur du cours Java mais cysboy.

      En espérant ne pas dire de bêtises et t'avoir aidé.
      • Partager sur Facebook
      • Partager sur Twitter
        4 janvier 2009 à 16:05:37

        Salut,

        merci pour ta réponse mais en fait c'est indispensable quand on utilise le même nom de variable de classe et de méthode. Si tu avais utilisé "var" commme variable de méthode tu n'aurais pas du utilser "this.maVariable" alors non? J'espère que j'ai bien compris...

        PS : désolé pour cysboy ;)
        • Partager sur Facebook
        • Partager sur Twitter
          4 janvier 2009 à 16:12:48

          Citation : Pas de titre

          tu n'aurais pas du utilser "this.maVariable" alors non?


          J'aurais pu ne pas utiliser this.maVariable mais maVariable oui.
          • Partager sur Facebook
          • Partager sur Twitter
            4 janvier 2009 à 16:50:37

            oui tu aurais "pu", excuse moi, je me suis mal exprimé... Merci pour tes explications, c'est vrai que c'est plus clair quand on met "this.maVariable"...

            Bonne fin de journée
            • Partager sur Facebook
            • Partager sur Twitter

            accès au variable

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown