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

Java Discussion :

appel d'une méthode du grand-père qui est surchargé dans le fils


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 158
    Points : 89
    Points
    89
    Par défaut appel d'une méthode du grand-père qui est surchargé dans le fils
    Bonjour,

    tout est dans le titre! je voudrais appeler dans ma classe fils toto la méthode faire() du grand-père titi qui est surchargé dans le fils toto. autrement dit :

    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
     
    titi{
    faire(){
    System.out.println("grand-père");
    }
     
    }
     
    tata extends titi{
    }
     
    toto extends tata{
     
    @Override
    faire(){
    super.super.faire();
    System.out.println("fils");
    }
     
    }

    et il faudrait que la méthode faire() de toto affiche


    Sauf que super.super ça ne marche pas...

    une idée?

  2. #2
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    super.faire() devrais être suffisant !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 158
    Points : 89
    Points
    89
    Par défaut
    disons que potentiellement, tata surcharge aussi ma méthode... je veux surtout savoir comment faire ça, si on peut. je me doute bien que niveau architecture c'est pas forcément splendide, mais ça correspond parfaitement à mon cas.

  4. #4
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    Si tata (ou plutôt Tata) surcharge la méthode faire c'est plutôt un problème de conception.

    En effet, la seule notion vérifiable au niveau d'une classe est le parent (car toute classe hérite au moins d'Objet)
    Si j'ai une classe qui hérite d'objet elle na pas de classe "grand-parent" donc le super.super n'existe pas.

  5. #5
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    Si dans la classe Tata tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        @Override
        faire(){
            super.faire();
            System.out.println("père");
        }
    dans la classe Toto

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    toto extends tata{
     
        @Override
        faire(){
            super.faire();
            System.out.println("fils");
        }
     
    }
    tu aura alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    grand-père 
    père
    fils

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 158
    Points : 89
    Points
    89
    Par défaut
    je sais bien que je peux faire autrement. mais je voulais qu'on me dise si c'est possible ou non.

    je n'ai pas essayé, remarque :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((titi)this).faire();

  7. #7
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Je suppose qu'il veut sauter la redéfinition au niveau du père pour s'adresser directement au grand-père, ce qui ne me parait pas possible.

  8. #8
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    Ce que tu peux faire mais ce ne sera pas beau

    dans la classe Tata ajouter une méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    protected void faireFaire() {
      super.faire();
    }
    et dans la classe Toto

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        faire(){
            super.faireFaire();
            System.out.println("fils");
        }

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 158
    Points : 89
    Points
    89
    Par défaut
    merci de tes réponses, je vais plutot me débrouiller pour appeler le super qui appelera le super.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 28/03/2015, 19h49
  2. Réponses: 3
    Dernier message: 29/06/2012, 02h09
  3. Qu'est ce qui fait planter à l'appel d'une méthode
    Par JeanNoel53 dans le forum Général Java
    Réponses: 2
    Dernier message: 19/10/2010, 17h57
  4. Réponses: 6
    Dernier message: 27/05/2005, 16h43
  5. Comment connaitre l'appelant d'une méthode
    Par Alec6 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 12/07/2004, 15h51

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