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 :

Héritage et méthodes


Sujet :

Langage Java

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 121
    Points : 46
    Points
    46
    Par défaut Héritage et méthodes
    Bonjour à tous.

    Je souhaiterais savoir si il est possible d'appeler une méthode "grand-mère" sur un objet :

    B extends A
    C extends B

    et je souhaiterais appliquer à C la méthode toString définit dans A (sachant que B et C possèdent eux aussi leur méthode toString()).

    Le but est de récupérer la référence d'un objet en utilisant le toString() de la classe Object.

    Possible? Ou y-a-t-il une autre façon d'afficher la référence d'un objet?

    Merci !

  2. #2
    Membre averti Avatar de Chatbour
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 431
    Points : 305
    Points
    305
    Par défaut
    Salut

    à ce que je sais, il n'est pas possible d'appeler la méthode redéfinie de la classe grand-mère.. car les méthodes redéfinies sont masquées (par contre les attributs non)..

    voici un exemple qui illustre ce point :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    class A{
    	public String toString(){
    		return "A";
    	}
     
    	public int i=1;
    }
     
    class B extends A{
    	public String toString(){
    		return "B";
    	}
     
    	public int i=2;
    }
     
    class C extends B{
    	public String toString(){
    		return "C";
    	}
     
    	public int i=3;
     
    	public int a=((A)this).i;
    	public String chaine = ((A)this).toString();
    }
     
     
    public class Tester{
    	public static void main(String[] args){
    		C c = new C();
     
    		System.out.println(c.a); // 1
     
    		System.out.println(c.chaine); // C
     
    	}
    }

    Cordialement..

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    As-tu essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    super.super.nomMethode()
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour.

    Nop ... ça, c'est pas permis en java, et même en faisant le malin en appelant super.truc et le super.truc appèle super.toString, ça ne changerait strictement rien : la méthode toString est perdu une fois pour toutes du moment qu'un élément de hiérarchie l'a redéfinie.

    @+

  5. #5
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Bonjour,
    en effet c'est le principe même de la redéfinition de méthode. Par contre, pour le besoin dans ce cas précis :
    Le but est de récupérer la référence d'un objet en utilisant le toString() de la classe Object.
    alors il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getClass().getName() + "@" + Integer.toHexString(hashCode())

  6. #6
    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,

    Citation Envoyé par lamoua76 Voir le message
    Ou y-a-t-il une autre façon d'afficher la référence d'un objet?
    System.identityHashCode(), qui devrait te renvoyer une valeur unique pour chaque objet en mémoire (dans la JVM de Sun cela correspond en fait à l'adresse mémoire de l'objet, mais ce n'est pas une obligation)

    a++

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par djo.mos Voir le message
    Bonjour.

    Nop ... ça, c'est pas permis en java, et même en faisant le malin en appelant super.truc et le super.truc appèle super.toString, ça ne changerait strictement rien : la méthode toString est perdu une fois pour toutes du moment qu'un élément de hiérarchie l'a redéfinie.

    @+
    C'est d'autant plus vrai que si j'avais pris la peine de le taper dans un éditeur de code, il m'aurait signalé une erreur ... désolé...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 121
    Points : 46
    Points
    46
    Par défaut
    j'ai pris note !
    Merci à tous !

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

Discussions similaires

  1. Héritage de méthodes
    Par lvr dans le forum Langage
    Réponses: 12
    Dernier message: 12/09/2007, 09h20
  2. héritage et méthode abstraite
    Par troussepoil dans le forum C++
    Réponses: 13
    Dernier message: 30/03/2007, 09h51
  3. Exceptions, héritage et méthodes virtuelles
    Par Nuwanda dans le forum C++
    Réponses: 13
    Dernier message: 23/05/2006, 12h06
  4. Réponses: 8
    Dernier message: 04/06/2004, 09h13
  5. [Héritage] Redéfinition méthode
    Par petit-ourson dans le forum Langage
    Réponses: 9
    Dernier message: 06/05/2004, 16h06

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