Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utilisation d'une variable dans un constructeur

    19 février 2020 à 18:31:29

    Bonjour,

    public class Bob {
        public static void main(String[] args) {
            int max;
            Scanner scan = new Scanner(System.in);
            System.out.println("blabla");
            max = scan.nextInt();
    
    
    
            Roger roger = new Roger(max);
    
    
    public class Roger {
        int maxi;
        public Roger (int initmax){
            maxi=initmax;
    
        }
        Lucie lucie = new Lucie(maxi);
        Camille camille = new Camille(maxi);
    
    
    

    Vous devinez je pense ce que j'essaye de faire...

    Sauf même si ma variable maxi, dans ma classe Roger, prends bien la bonne valeur : cette dernière ne se transfère pas chez lucie et camille.

    Du coup, pourquoi cela ne fonctionne-t-il pas et comment résoudre ce probleme?

    Merci.:D

    -
    Edité par BobBoby13 19 février 2020 à 18:32:57

    • Partager sur Facebook
    • Partager sur Twitter
      19 février 2020 à 18:38:43

      C'est pas un problème.

      Le problème, c'est que tu n'as pas compris ce qu'est un champ d'une instance.

      • Partager sur Facebook
      • Partager sur Twitter
        20 février 2020 à 9:28:47

        Pour faire simple, dans une classe tu as :

        • des variables d'instance
        • des méthodes.

        \(lucie\) et \(camille\) ne sont pas dans une méthode, donc Java les considère comme des variables d'instance au même titre que \(maxi\).

        Les variables d'instance s'initialisent avant l'exécution du constructeur, quel que soit l'ordre dans lequel tu les écris.

        Donc quand tes variables \(lucie\) et \(camille\) sont initialisées, \(maxi\) n'a pas encore été défini par le constructeur et vaut donc 0 (par défaut ; si c'était une variable de type objet elle vaudrait null).

        Ca devrait te donner suffisamment d'indications pour trouver la bonne façon d'écrire les choses. :ninja:

        • Partager sur Facebook
        • Partager sur Twitter
          24 février 2020 à 8:32:03

          > Vous devinez je pense ce que j'essaye de faire...

          Le problème, c'est que non. Et comme tu n'arrives pas à l'exprimer

          • sous forme de phrases compréhensibles
          • par du code

          il est probable que tu ne le sais pas non plus.

          Faut prendre les problèmes dans le bon sens. Quand on crée des objets, c'est parce qu'on veut que ces objets rendent un certain service.

          Alors bon, tu écris

          Truc t = new Truc("machin");
          

          bon ok. Et alors. On fait quoi avec cette variable t maintenant ? Qu'est ce qu'on en attend ? Tu veux que

          t.foo();

          affiche 6 ?

          Faut commencer par ça. Savoir ce qu'on mettra dans les attributs et méthodes  de la classe pour que les objets aient le comportement voulu, ça vient après.



          PS: comment on ferait pour deviner ce que devrait faire du code, alors que ce code ne le fait pas ?

          -
          Edité par michelbillaud 24 février 2020 à 8:37:25

          • Partager sur Facebook
          • Partager sur Twitter

          Utilisation d'une variable dans un constructeur

          × 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