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 :

aide pour comprendre ce petit code java


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Points : 6
    Points
    6
    Par défaut aide pour comprendre ce petit code java
    s.v.p
    aide pour comprendre
    j'ai exécuté le code suivant :

    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
    27
    class A {
        int i = 1 ;
        int f() { return i ;}
        static char g() { return 'A' ;}
    }
     
    class B extends A {
        int i = 2 ;
        int f () {return -i ;}
        static char g() { return 'B' ;}    
    }
     
    public class Test {
        public static void main(String args[]) {
            B b = new B() ;
            System.out.println(b.i) ;
            System.out.println(b.f()) ;
            System.out.println(b.g()) ;
            System.out.println(B.g()) ;
     
            A a = b ;
            System.out.println(a.i) ;
            System.out.println(a.f()) ;
            System.out.println(a.g()) ;
            System.out.println(A.g()) ;
        }
    }
    et j'ai le résultat :

    2
    -2
    B
    B
    1
    -2
    A
    A

    je ne comprend pas d'où vient le 1

    Merci!

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    C'est en effet un joli piège .

    D'où il vient, ça me semble évident : la classe A définit le membre int i = 1;
    Il vient de là.

    Comment se fait-il que ça soit cette valeur alors que l'objet est en réalité une instance de B ?
    C'est ça la bonne question.

    Bon, imagine que dans ta classe A, tu n'aies pas déclaré int i = 1;
    Tu enlèves cette ligne.

    Est-ce que tu peux encore écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    A a = b ;
    System.out.println(a.i) ;
    ?

    Ben voilà, tu as ta réponse.

    Règle 1 : Les variables membres ne peuvent pas être redéfinies par les classes filles. Elles peuvent juste être masquées par une autre variable membre de même nom. Seules les méthodes peuvent être redéfinies.

    Règle 2 : Quand on accède à une variable membre d'un objet déclaré de type A, peu importe quel est le type réel de cet objet. Le compilateur va chercher la variable membre définie par la classe A, un point c'est tout.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci bien !

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    en résumé, pour les champs, il n'y a pas de redéfinition -> c'est résolu dès la compilation et le compilateur utilise le type déclaré.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 30
    Points : 28
    Points
    28
    Par défaut Conseil
    Bonjour,
    Je te conseil d'observer le petit celebre programme
    hello word de.


Discussions similaires

  1. Aide pour comprendre et modifier un code
    Par metal85 dans le forum Assembleur
    Réponses: 1
    Dernier message: 06/08/2006, 09h47
  2. Besoin d aide pour comprendre un code
    Par litlebasic dans le forum Delphi
    Réponses: 4
    Dernier message: 22/06/2006, 13h00
  3. Aide pour comprendre un code
    Par Spacy_green dans le forum Assembleur
    Réponses: 2
    Dernier message: 13/02/2006, 13h22
  4. Aide pour comprendre le code
    Par jfreuff dans le forum Assembleur
    Réponses: 2
    Dernier message: 31/01/2006, 17h54

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