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

Langage Java Discussion :

[DEBUTANT] Probléme avec l'héritage


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2002
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 224
    Par défaut [DEBUTANT] Probléme avec l'héritage
    J'ai une classe class CentreInteretPostgresDAO extends AbstractPostgreSql implements CentreInteretDAO La classe AbstractPostgreSql posséde une méthode public int findeLastId(String dataBase)
    Donc losque j'instancie un objet CentreInteretPostgresDAO je devrait logiquement hérité des méthodes de la classe Abstraite AbstractPostgreSql mais ca ne fonctionne pas.

    Moi pas comprendre

  2. #2
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Si elles sont en visibilité private ou package (sans mot clé), les méthodes ne se transmettent pas aux classes filles.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 28
    Par défaut
    Peux tu être plus précis quand tu dis "Cela ne fonctionne pas" ?

    Quand tu fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monCentreInteretPostgresDAO.findeLastId();
    javac te dit que la métode "findeLastId" n'existe pas dans la classe "CentreInteretPostgresDAO" ?

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2002
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 224
    Par défaut
    Peux tu être plus précis quand tu dis "Cela ne fonctionne pas" ?
    Le code ci dessous génére l'erreur : The method findeLastId() is undefined for the type CentreInteretDAO TestCentreInteret.java
    CentreInteretDAO centreInteretDAO = CentreInteretDAOFactory.createCentreInteretDAO();
    int lastId = centreInteretDAO.findeLastId();
    Pour être plus précis CentreInteretDAO est une Interface qui récupére grace à un factory un objet CentreInteretPostgresDAO qui hérite de la classe AbstractPostgreSql

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par BRAUKRIS
    Le code ci dessous génére l'erreur : The method findeLastId() is undefined for the type CentreInteretDAO
    Cela signifie tout simplement que la méthode findeLastId() n'est pas définit dans l'interface CentreInteretDAO, donc tu ne peux pas l'appeller...

    a++

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2002
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 224
    Par défaut
    OUi je suis d'accord sauf que l'interface CentreInteretDAO contient un objet CentreInteretPostgresDAO qui elle contient cette méthode. Cela veut-il dire qu'en cas de Polymorphisme les méthodes héritées ne sont pas visible ?

  7. #7
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par BRAUKRIS
    OUi je suis d'accord sauf que l'interface CentreInteretDAO contient un objet CentreInteretPostgresDAO qui elle contient cette méthode. Cela veut-il dire qu'en cas de Polymorphisme les méthodes héritées ne sont pas visible ?
    Seules les méthodes définis dans l'interface sont accéssible. Tu ne peux pas présumer du type exact retourner par la méthode CentreInteretDAOFactory.createCentreInteretDAO(), sauf qu'il implémentera forcément l'interface CentreInteretDAO. C'est pour ca que tu ne peut utiliser que les méthodes définit dans cette interface (ou dans la classe Object puisque toutes les classes en héritent).

    Pour pouvoir appeller la méthode définit dans AbstractPostgreSql tu dois caster ton objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CentreInteretDAO centreInteretDAO = CentreInteretDAOFactory.createCentreInteretDAO();
    if (centreInteretDAO instanceof AbstractPostgreSql) {
    	int lastId = ((AbstractPostgreSql)centreInteretDAO).findeLastId();
    }
    Mais si tu en arrive là c'est que ta conception n'est pas correcte. L'interface retourné par ta Factory devrait contenir toutes les méthodes que ton objet DOA pourra utiliser...

    a++

  8. #8
    Membre éclairé
    Inscrit en
    Avril 2002
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 224
    Par défaut
    Ok merci.

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

Discussions similaires

  1. [VC++] Problème avec un héritage
    Par Freakazoid dans le forum Visual C++
    Réponses: 7
    Dernier message: 28/11/2005, 08h35
  2. [Debutant] Problème avec des membres static
    Par Mathieu.J dans le forum Débuter
    Réponses: 4
    Dernier message: 24/08/2005, 17h09
  3. [debutant]Problème avec une requete ....
    Par MichMich29 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 27/07/2005, 17h19
  4. [debutant] problème avec type à utiliser
    Par mlequim dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 15/07/2005, 16h08

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