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 :

Compréhension exercice certification Java


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 134
    Par défaut Compréhension exercice certification Java
    Bonjour,
    je suis en train de regarder les exos du chap2 et meme par son explication je ne comprends pas bien :

    voici cette exercice :
    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
    22
    23
    24
    25
    26
     
    classe A{}
    classe B extends A {}
    public class toto {
     static String s="-";
     public static void main (String[] args){
      A aa = new A[2];
      B ba = new B[2];
     
      titi(aa);
      titi(ba);
      titi(7);
      System.out.println(s);
     }
     
     static void titi(A[]... a2) {s+="1"};
     static void titi(B[]... b1) {s+="2"};
     static void titi(B[] b1) {s+="3"};
     static void titi(Object o) {s+="4"};
    }
    et j'ai le choix entre les 4 résultats : 
    -124
    -134
    -424
    -434
    -444
    La réponse est 434 mais je ne comprends toujours pas pourquoi on choisi la réponse 3 et 4
    On partirait que l'on overload du plus général au plus spécifique donc de l'Object vers un tableau qui est en principe défini comme un objet alors pour choisir la réponse 4 pour le int 7?
    je dois dire que c'est assez confus
    pourriez-vous m'aider?

  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
    Citation Envoyé par prugne Voir le message
    On partirait que l'on overload du plus général au plus spécifique donc de l'Object vers un tableau qui est en principe défini comme un objet alors pour choisir la réponse 4 pour le int 7?
    je dois dire que c'est assez confus
    En effet, je n'ai pas compris ta phrase du dessus.

    Mais bon, pour le int 7 c'est évident : int n'est pas un sous-type de A[] ni de A[][] ni de B[] ni de B[][]. Il ne peut pas non plus être implicitement converti en un sous-type de l'un d'eux.

    Par élimination, les méthodes 1, 2 et 3 sont rejetées d'office, il reste donc la 4.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    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
    Pour l'entier "7", depuis Java 1.5, il y a de l'auto-boxing.
    Le "7" de type "int" est changé automatiquement en objet java.lang.Integer.
    La seule méthode "titi" capable de prendre un Integer en paramètre est la "4".
    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.

  4. #4
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 134
    Par défaut ok merci
    j'ai compris pour le int 7
    et pourquoi la réponse ne serait pas plus : 334 concernant le choix des méthodes pour les tableaux de type A et B ?

  5. #5
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Comme sa je te dirais que si tu as un 3 c'est que l'objet est du type B[], alors que ton premier objet c'est aa de type A[], donc tu n'auras jamais un début avec 3.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Par défaut
    Tu as fais une petite erreur de retranscription aux lignes 7 et 8. Tu devrais plutôt avoir ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    A[] aa = new A[2];
    B[] ba = new B[2];
    Pour répondre à ta question, la réponse ne peut pas être 334 pour plusieurs raisons.

    Tout d'abord, nous avons affaire à des tableaux. Or, si A hérite de B, A[ ] n'hérite pas de B[ ] !!! Les tableaux, quel que soit leur type, héritent directement et uniquement de Object.

    Ensuite, dans l'hypothèse où nous aurions affaire à des objets simples et non à des tableaux, c'est B qui hérite de A. Donc une méthode titi(B) ne pourrait pas être appelée en lui passant une instance de A. C'est l'inverse qui est possible, appeler une méthode titi(A) en lui passant une instance de B.


Discussions similaires

  1. [Java] Seriez-vous intéressé par un Guide à la Certification Java ?
    Par christopheJ dans le forum Certifications
    Réponses: 121
    Dernier message: 07/09/2011, 18h39
  2. [Java] Livres de certification java 5
    Par garincha55 dans le forum Certifications
    Réponses: 2
    Dernier message: 13/04/2006, 15h20
  3. [Java] Infos et feedback sur la certification Java SCJP
    Par Gregory3000 dans le forum Certifications
    Réponses: 1
    Dernier message: 19/10/2005, 09h06
  4. Passer les certifications java sans se ruiner.
    Par Turtle dans le forum Certifications
    Réponses: 7
    Dernier message: 21/03/2005, 09h21

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