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 :

Question sur l'héritage


Sujet :

avec Java

  1. #1
    Invité
    Invité(e)
    Par défaut Question sur l'héritage
    Bonsoir,

    J'ai un problème avec des héritages.
    J'ai un classe Document.
    4 classes, Livre, périodique, Cd, Dvd qui en héritent.
    Et une classe Document_S qui contient une ArrayList de Document.

    Dans une fonction qui reçoit un Document, je test avec instanceof si ce Document est un Livre un périodique un Cd ou un Dvd.

    Mais je n'arrive pas à accéder aux attributs des classes Livre, périodique, Cd, Dvd ..

    C'est normal puisque c'est un Document :/
    Mais comment résoudre ce problème ? Avec quelles relations les lier ?

    Merci de votre aide.
    Sayce.

  2. #2
    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 : 36
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Bonsoir,

    Que souhaites tu faire ?

    si dans ton tableau tu as

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Livre l = new Livre();
    Dvd d = new Dvd ();
    tab.add(l);
    tab.add(d);
    Tu as accès aux attributs de livre et de dvd et vue qu'ils héritent de document ils peuvent être dans ton tableau.
    Vu ma fatigue je me trompe peut être mais sinon j'ai du mal à voir ce que tu souhaites faire et je m'en excuse .
    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

  3. #3
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 657
    Points
    2 657
    Par défaut
    Citation Envoyé par sayce Voir le message
    Bonsoir,

    J'ai un problème avec des héritages.
    J'ai un classe Document.
    4 classes, Livre, périodique, Cd, Dvd qui en héritent.
    Et une classe Document_S qui contient une ArrayList de Document.

    Dans une fonction qui reçoit un Document, je test avec instanceof si ce Document est un Livre un périodique un Cd ou un Dvd.

    Mais je n'arrive pas à accéder aux attributs des classes Livre, périodique, Cd, Dvd ..

    C'est normal puisque c'est un Document :/
    Mais comment résoudre ce problème ? Avec quelles relations les lier ?

    Merci de votre aide.
    Sayce.
    Il faut que tu les cast derrière dans le type que tu veux.
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (x instanceof OBJET)
    {
    OBJET o = (OBJET) x;
    }

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Merci de m'avoir aidé, j'ai trouvé la solution

    Mais j'ai un nouveau problème

    J'ai le même schéma que ci-dessus, mais avec une classe Bibliothéques, qui contient un Document_S
    Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Bibliotehecaire_S bib_ = new Bibliotehecaire_S();
    Ensuite, dans ma classe Document_S, j'ai une ArrayList de Document et un getter de cette ArrayList, "getDocument()"

    Ainsi quand je fais "doc_.getDocument()" je récupére l'ArrayList de Document
    Quand je fais "doc_.getDocument().get(i)" le Document de l'ArrayList à l'indice "i".

    Or, quand je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
               System.out.println("\nTest : "+((Livre)doc_.getDocument().get(1)).getIsbn());
               System.out.println("\nTest : "+((Periodique)doc_.getDocument().get(1)).getCode_barre());
    C'est à dire que je cast le document, en Livre ou Periodique pour accéder à son Isbn ou Code_Barre, cela plante.
    Mais Seulement quand je fais les deux à la suite.
    Je viens de voir que la 1er ligne seul fait aussi planter :/
    Mais la dernière ligne seul s'execute

    Je comprends absolument pas pourquoi ça plante, pourquoi les casts ne marchent pas ...

    Si vous pouviez me donner une solution,
    Merci

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

Discussions similaires

  1. Questions sur l'héritage multiple
    Par beegees dans le forum C++
    Réponses: 12
    Dernier message: 31/03/2008, 17h01
  2. Question sur l'héritage (débutant en C++)
    Par beegees dans le forum C++
    Réponses: 19
    Dernier message: 30/03/2008, 14h45
  3. petite question sur l'héritage et les cast
    Par baedal dans le forum Langage
    Réponses: 3
    Dernier message: 29/02/2008, 00h48
  4. Questions sur l'héritage dans Matisse
    Par Cassios dans le forum NetBeans
    Réponses: 8
    Dernier message: 14/03/2007, 23h23
  5. Question sur l'héritage
    Par the big ben 5 dans le forum Delphi
    Réponses: 28
    Dernier message: 06/06/2006, 17h27

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