IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Erreur "Implicit super constructor Token() is undefined. Must explicitly invoke another constructor"


Sujet :

Java

  1. #1
    Membre chevronné

    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2007
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2007
    Messages : 214
    Par défaut Erreur "Implicit super constructor Token() is undefined. Must explicitly invoke another constructor"
    Bonjour,

    J'ai écris un code assez court, Eclipse me détecte une erreur que je n'arrive pas à comprendre. Voila mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     ### Classe Token ###
    public class Token {
        public final static int NUM=256, WORD=257;
        public final int tokenKind;
     
    	public Token(int kindOfToken) {
    		this.tokenKind = kindOfToken;
    	}
     
    }
    Jusqu'à là, pas de problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     ### Classe TokenNumber ###
    public class TokenNumber extends Token {
    	public final int value;	
     
    	public TokenNumber(int v) {
    		this.value = v;
    		this.tokenKind = NUM;
    	}
     
    }
    C'est là que ca se gate : il m'annonce "[erreur] Implicit super constructor Token() is undefined. Must explicitly invoke another constructor"

    Mais qu'est ce qu'il me dit ???

    Christophe

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Puisque tu n'explicites rien dans le constructeur "TokenNumber", la JVM va d'abord appeler le constructeur par défaut de la classe mère. Or ce constructeur par défaut n'existe pas.
    Tu as deux possibilités : soit écrire un constructeur par défaut dans "Token", soit appeler explicitement en première instruction du constructeur "TokenNumber" le constructeur de ton choix "Token".
    Dans ton cas, cela donnerai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public TokenNumber( int v )
    {
      super( v );
      ... suite ...
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2012
    Messages
    3 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3 020
    Par défaut
    Bonjour,

    Ta classe Token n'a pas de constructeur par défaut, ton compilo ne sait donc pas initialiser la variable tokenKind.

    Il faudrait donc dans ta classe TokenNumber, dans le constructeur, rajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public TokenNumber(int v) {
    		super(NUM);
    		this.value = v;}
    J'ajoute que dans TokenNumber, tu ne peux pas faire car tu l'a déclaré final. Donc tu ne peux pas le modifier une fois qu'il a été initialisé.

    Mais le fait de faire super(NUM) l'initialise via le constructeur de Token.

  4. #4
    Membre chevronné

    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2007
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2007
    Messages : 214
    Par défaut
    Merci !

  5. #5
    Invité de passage
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 1
    Par défaut
    Merci dinobogan et Carhiboux! Je suis pas encore très à l'aise avec ces super()...ça viendra!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. erreur : expected unqualified-id before '+' token
    Par issmaz dans le forum Débuter
    Réponses: 3
    Dernier message: 27/10/2011, 10h21
  2. Réponses: 2
    Dernier message: 08/02/2010, 10h00
  3. erreur : syntax error near unexpected token
    Par lapinou8430 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 28/04/2009, 00h30
  4. Réponses: 9
    Dernier message: 18/05/2008, 12h06
  5. Réponses: 1
    Dernier message: 04/10/2006, 09h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo