Partage
  • Partager sur Facebook
  • Partager sur Twitter

Les variables de classes

plus d'explicaations

Sujet résolu
    15 octobre 2008 à 19:57:47

    J’ai une petite question sur la partie2 : Java orienté objet, chapitre11 : Les premiers pas en "Orienté Objet", la partie : Les variables de classes.

    on a le code dela classe ville suivant:

    public class Ville {
     
      /**
       * Variables publiques qui comptent les instances
       */
      public static int nbreInstance = 0;
      /**
       * Variable privée qui comptera aussi les instances
       */
      private static int nbreInstanceBis = 0;
            
      /**
       * Stocke le nom de notre ville
       */
      private String nomVille;
      /**
       * Stocke le nom du pays de notre ville
       */
      private String nomPays;
      /**
       * Stocke le nombre d'habitants de notre ville
       */
      private int nbreHabitant;
      /**
       * Stocke le type de notre ville
       */
      private char categorie;
      
      /**
       * Constructeur par défaut
       */
      public Ville(){
              //On incrémente nos variables à chaque appel aux constructeurs
              nbreInstance++;
              nbreInstanceBis++;
              
              nomVille = "Inconnu";
              nomPays = "Inconnu";
              nbreHabitant = 0;
              this.setCategorie();
      }
     
      /**
       * Constructeur d'initialisation
       * @param pNom 
       *                    Nom de la Ville
       *  @param pNbre
       *                    Nombre d'habitants
       *  @param pPays
       *                    Nom du pays
       */
      public Ville(String pNom, int pNbre, String pPays)
      {  
            //On incrémente nos variables à chaque appel aux constructeurs
              nbreInstance++;
              nbreInstanceBis++;
              
              nomVille = pNom;
              nomPays = pPays;
              nbreHabitant = pNbre;
              this.setCategorie();
      }
    }
    


    et le code de la classe principale suivant:

    Ville v = new Ville();
                    
    System.out.println("Le nombre d'instances de la classe Ville est : " + Ville.nbreInstance);
    System.out.println("Le nombre d'instances de la classe Ville est : " + Ville.getNombreInstanceBis());
                            
    Ville v1 = new Ville("marseille", 1236, "france");
            
    System.out.println("Le nombre d'instances de la classe Ville est : " + Ville.nbreInstance);
    System.out.println("Le nombre d'instances de la classe Ville est : " + Ville.getNombreInstanceBis());
                    
    Ville v2 = new Ville("rio", 321654, "brésil");
            
    System.out.println("Le nombre d'instances de la classe Ville est : " + Ville.nbreInstance);
    System.out.println("Le nombre d'instances de la classe Ville est : " + Ville.getNombreInstanceBis());
    


    j'aimerai savoir pourquoi les compteurs nbreInstance et nbreInstanceBis ont augmenté jusqu'à 3 puisque normalement à chaque fois quand fait une instance de la classe ville les compteurs sont reinitialisés à 0.
    Pouvez-vous m donnez plus d'explications sur ce code.
    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      15 octobre 2008 à 20:05:07

      Une variable de classe est indépendante de toute instance de cette classe. Par exemple, la variable "nbreInstance" ne dépend d'aucune instance de la classe Ville.

      La variable "nbreInstance" a sa valeur commune à toutes les instances de la classe Ville.


      Les variables de classe sont initialisées une seule fois pour tout, c'est à dire au premier appel de la classe.

      Est-ce plus clair ?

      Corentin
      • Partager sur Facebook
      • Partager sur Twitter
        15 octobre 2008 à 20:10:06

        Citation : chafic_si3

        chaque fois quand fait une instance de la classe ville les compteurs sont reinitialisés à 0.





        public Ville(){
                  //On incrémente nos variables à chaque appel aux constructeurs
                  nbreInstance++;// incrementation 
                  nbreInstanceBis++; //incrementation
                  
                  nomVille = "Inconnu";
                  nomPays = "Inconnu";
                  nbreHabitant = 0;
                  this.setCategorie();
          }
        


        Aucune réinitialises à 0 !

        Bonne suite !

        • Partager sur Facebook
        • Partager sur Twitter
          15 octobre 2008 à 21:39:12

          Merci pour vos réponses Corentin et Seif,
          maintenant j'ai bien compris que la variable de classe s'initialise une seul fois lors du premier appele de la classe et pas à chaque fois qu'on fait une instance de cette classe.
          C'était ça mon problème.
          Merci.
          • Partager sur Facebook
          • Partager sur Twitter

          Les variables de classes

          × 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