Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme surcharge constructeur

Sujet résolu
    12 octobre 2011 à 16:55:17

    Bonjour, j'ai pas mal d’années de programmation derrière moi, notamment en C/C++. Cependant je débute en java et je me retrouve avec un message d'erreur que je ne comprend pas :

    public class Item extends ADescribable
    {
        private int weight;
        
    
        Item(String name, String description)
        {
            Item(name, description, 1); // ICI erreur du genre : cannot find symbol, pourtant quand on regarde juste en bas ...
        }
        
        Item(String name, String description, int weight)
        {
            setName(name);
            setDescription(description);
            this.weight = weight;
        }
    }
    


    Merci pour votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      12 octobre 2011 à 17:30:14

      En Java, pour hériter des paramètres de la classe Mère (dans ton cas "ADescribable"), tu dois utiliser une fonction spéciale java qui s'appelle :
      super();
      


      Autrement je ne comprend pas pourquoi tu fais des SETTERS dans tes constructeurs.
      Sois tu initialises directement tes variables comme tu l'as fais pour
      this.weight = weight;
      

      Soit tu fais super()

      Voila ;)
      • Partager sur Facebook
      • Partager sur Twitter
        12 octobre 2011 à 18:05:07

        Pour moi ton problème est autre, tu essaye de créer un autre objet alors que visiblement tu veux juste appeler ton autre constructeur
        Pour appeler un constructeur de la même classe, il suffit d'utiliser "this"


        Item(String name, String description)
            {
                this(name, description, 1); 
            }
        
        • Partager sur Facebook
        • Partager sur Twitter
          12 octobre 2011 à 20:41:40

          Merci pour vos réponses !

          @balo069 : Effectivement, c'est ce que je voulais faire, et maintenant que je vois ta réponse ça me parait tellement logique ... :D
          @guk92 : ADescribable est une classe abstraite (d'ou le A en première lettre), donc pas de super() ^^. Par contre tu a relevé quelque chose d'important. Mes setters rendent le code pas très clair, autant mettre en protected les champs de ADescribable et tout faire avec des this.x = x;

          Problème résolu ;)
          • Partager sur Facebook
          • Partager sur Twitter

          Probleme surcharge 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