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

avec Java Discussion :

type énuméré java


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 74
    Par défaut type énuméré java
    j'ai testé ce bout code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    enum Cheval {
      PONEY(10),
      // insérer le code ici
      CHEVAL(15);
     
      Cheval(int mains) { 
        this.hauteur = mains; 
        this.longueur = mains * 100;
      }
      int hauteur;
      int longueur;
      int getLongueur() { return longueur; }
      void setLongueur(int w) { longueur = w; }
    }
     
    class Stable {
      public static void main(String [] salut) {
        Cheval h = Cheval.ISLANDAIS;
        System.out.println(h.getLongueur () + " " + h.hauteur);
      }
    }
    Qu'est ce qui, inséré à la place de '// insérer le code ici', produit le résultat:
    800 13
    ? (Choisissez toutes les possibilités.)

    A)ISLANDAIS(13) { longueur = 800; },
    B)ISLANDAIS(13) { setLonguer(800); },
    C)ISLANDAIS(13) { this.longueur = 800; },
    D)ISLANDAIS(13) { public int getLongueur() { return 800; } },
    E)Aucun du code ci-dessus va produire le résultat demandé.
    F)Du fait de la présence d'autres erreurs dans le code, aucun des choix proposés ne permettra la compilation.
    j'ai testé toutes les propositions la correcte c'est D)
    mais je n'arrive pas a comprendre pourquoi D) qui est correcte

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    D) est correcte parce qu'elle produit le résultat demandé.

    Le résultat demandé est 800 13. Ce résultat est obtenu avec h.getLongueur () + " " + h.hauteur. Autrement dit, il faut que h.getLongueur() donne 800 et h.hauteur donne 13.

    Occupons-nous d'abord de h.hauteur. C'est juste un accès à la variable d'instance hauteur de l'enum Cheval.
    Cette variable est initialisée dans le constructeur de Cheval, en prenant la valeur du paramètre donné au constructeur.

    Donc, en faisant ISLANDAIS(13), l'objet ISLANDAIS est construit en appelant le constructeur avec comme paramètre 13, donc c'est ce que vaudra la variable hauteur, donc 13, c'est bon.

    Maintenant h.getLongueur(). C'est un appel de la méthode getLongueur() de l'enum Cheval. À première vue cette méthode ne fait que renvoyer la variable longueur, qui est initialisée à 100 fois ce que vaut la hauteur, et du coup ça devrait donner 1300 et pas 800 et ça n'irait pas... Oui mais c'est pour ça qu'on a besoin de faire la réponse D) !

    La réponse D) redéfinit la méthode getLongueur() pour l'objet ISLANDAIS, pour que ça renvoie 800 sans se poser de question. Du coup, quand on appelle getLongeur(), pour l'objet ISLANDAIS ce sera sa méthode redéfinie qui sera appelée, et ça donnera 800. Ce qui est le résultat attendu.

    Du coup, la réponse D) marche.

    Les autres réponses sont incorrectes, parce qu'elle ne compilent pas. Elles essaient tous de définir l'objet ISLANDAIS avec un corps de classe, mais ce qu'elles mettent dedans ne sont que des "instructions", ou en tout cas des trucs qui ont l'air d'être des instructions. Mais dans un corps de classe on ne peut pas mettre des instructions. On peut mettre, par exemple, des déclarations de variables, ou bien des définitions de méthodes comme en D). Mais pas des instructions. Les autres réponses sont donc incorrectes.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [Servlet] Récupération du Content-type en Java
    Par hdd dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 08/02/2006, 16h38
  2. [D2005] Utilisation des types énumérés
    Par bouha dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 21/07/2005, 22h21
  3. [Débutant] The authentication type 5, java
    Par agougeon dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 07/05/2005, 14h01
  4. Réponses: 7
    Dernier message: 02/06/2003, 08h38
  5. Transformer un caractère en type énuméré
    Par HT dans le forum Langage
    Réponses: 3
    Dernier message: 22/10/2002, 20h46

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