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 :

comment le super fonctionne entre différents apels


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 354
    Points : 491
    Points
    491
    Par défaut comment le super fonctionne entre différents apels
    j'ai une question, quand on utilise le super dans java sur une méthode, et que celle ci appelle aussi un super, est-ce-que le 2ème super va s'appliquer a partir la classe de base et rechercher dans les suivante, ou va t il s appliquer depuis la classe ou le 2eme super à été trouvé?? j'ai jamais fait de java, j'espère qu on me comprend..

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Points : 199
    Points
    199
    Par défaut
    Je ne comprends pas trop ce que tu veux dire, le mieux serait de mettre un exemple.

    Dans une méthode, l'appel à "super.méthode" va chercher la méthode de la classe parente la plus proche, en cherchant la première redéfinissant cette méthode. Je pense que c'est pareil dans le cas d'attributs dupliqués, mais j'ai jamais testé.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 354
    Points : 491
    Points
    491
    Par défaut
    merci de tas réponse

    Dans une méthode, l'appel à "super.méthode" va chercher la méthode de la classe parente la plus proche, en cherchant la première redéfinissant cette méthode.
    ok, mais si cette méthode appel aussi un super, alors la recherche va commencer à partir de la classe ou le 1er super à été trouvé (la classe parent la plus proche ) , ou celle de base ,là ou le 1er super appelé.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Points : 199
    Points
    199
    Par défaut
    C'est récursif, chaque méthode sera appelée à la suite l'une de l'autre (comme un constructeur) :
    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
    public class A {
     public void méthode(){
      // méthode A
     }
    }
    public class B extends A {
     public void méthode(){
      // méthode B
      super.méthode(); // super.méthode() à la fin
     }
    }
    public class C extends B {
     public void méthode(){
      super.méthode();
      // méthode C
     }
    }
    Résultat : (C).méthode(); -> B,A,C
    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
    public class A {
     public void méthode(){
      // méthode A
     }
    }
    public class B extends A {
     public void méthode(){
      // méthode B
      // pas de super.méthode()
     }
    }
    public class C extends B {
     public void méthode(){
      super.méthode();
      // méthode C
     }
    }
    Résultat : (C).méthode(); -> B,C
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class A {
     public void méthode(){
      // méthode A
     }
    }
    public class B extends A {
    }
    public class C extends B {
     public void méthode(){
      super.méthode();
      // méthode C
     }
    }
    Résultat : (C).méthode(); -> A,C

    Je pense pas être très clair, mais le principe est là

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 354
    Points : 491
    Points
    491
    Par défaut
    merci de tas réponse JohnNC, en faite j'y avais mal réfléchie, mais en effet mon deuxième super va forcement être appelé depuis la classe ou il a été trouvé , sinon ,si je fait deux appel de super successif vers la même méthode, il y aura récursivité ....

    a++

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

Discussions similaires

  1. Comment "communiquer" entre différents projets ?
    Par StormimOn dans le forum C#
    Réponses: 17
    Dernier message: 08/07/2008, 13h55
  2. Comment réaliser un benchmark entre différents langages ?
    Par thomas-python dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 11/04/2008, 09h53
  3. Réponses: 10
    Dernier message: 23/05/2007, 15h55
  4. Réponses: 3
    Dernier message: 19/11/2006, 15h40
  5. [ADO.Net][VB.NET] Comment copier des données entre deux BDD différentes ?
    Par maddog2032 dans le forum Accès aux données
    Réponses: 6
    Dernier message: 06/06/2005, 11h01

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