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 :

caster un objet vers sa classe mère


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Developper
    Inscrit en
    Juin 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Developper

    Informations forums :
    Inscription : Juin 2008
    Messages : 55
    Points : 53
    Points
    53
    Par défaut caster un objet vers sa classe mère
    Bonjour,

    J'ai bien chercher dans le forum. j'ai vu des questions qui s'approchent du sujet, mais je n'ai pas trouver de réponse à ma question :

    J'ai une classe A et une classe B qui hérite de A

    dans A j'ai une méthode presentation() qui affiche "je suis un A"
    dans B, la même methode affiche "je suis un B"

    si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    A monObjet = new b();
     
    b.presentation();
     
    ((A)b).presentation();
    j'obtiens à chaque fois "je suis un B". Pourtant, je pensais avoir caster l'objet B en objet A. Ce n'est pas possible ?

    Merci

    harf

  2. #2
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Bonjour,

    il s'agit là d'un des principes de base de l'héritage. Tu as décidé de redéfinir une méthode, donc le comportement de B n'est pas celui de A.

    D'un point de vue technique, la seule manière (à ma connaissance) d'appeler la méthode telle qu'elle est définie dans A est de faire une autre méthode dans B (presentationA() par exemple) qui appelle la méthode définie dans A de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void presentationA() {
        super.presentation();
    }
    Mais d'un point de vue conceptuel, ça a peu (voire pas) d'intérêt.

  3. #3
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,



    En Java toutes les méthodes sont virtuelles. La résolution des méthodes d'instance est donc dynamique et dépend du type réel de l'instance et non pas uniquement de son type déclaré.

    Lorsque tu fais ceci :
    Le compilateur génère bien un appel vers la méthode A.presentation(), mais à l'exécution la JVM vérifie le type réel de l'instance, c'est à dire B, et appelle donc la méthode qui y a été redéfinie...


    a++

  4. #4
    Membre du Club
    Profil pro
    Developper
    Inscrit en
    Juin 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Developper

    Informations forums :
    Inscription : Juin 2008
    Messages : 55
    Points : 53
    Points
    53
    Par défaut
    Merci à tous les deux.

    C'est clair que ça n'a pas trop d'intérêt. Je voulais surtout comprendre le pourquoi ! C'est fait.

    Merci

    harf

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/07/2014, 23h40
  2. Caster vers la classe mère
    Par thtioxine dans le forum Général Java
    Réponses: 5
    Dernier message: 21/04/2010, 10h08
  3. [POO] Cast d'objet vers une classe
    Par karl3i dans le forum Langage
    Réponses: 9
    Dernier message: 27/07/2009, 11h12
  4. Réponses: 6
    Dernier message: 22/11/2008, 16h46
  5. Réponses: 7
    Dernier message: 22/03/2007, 15h26

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