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 :

problème avec this/super


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut problème avec this/super
    Salut,

    J'apprend en ce moment le Java mais il y a quelques chose que ne comprends pas. Ce sont les mots-clés this et super
    Pour this, je ne vois pas à quoi ça sert, je peux très bien donner les données de l'objet en paramètres dans la méthode, non?
    Et super, je peux récupérer les méthodes avec extends, non?

    Merci d'avance,

  2. #2
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    salut.
    on peut utiliser this et super pour plusieurs raisons
    je vais donner qd même deux exemples.
    Citation Envoyé par Scronchh Voir le message
    Pour this, je ne vois pas à quoi ça sert, je peux très bien donner les données de l'objet en paramètres dans la méthode, non?
    si les paramétrés de ta méthode ont le même nom que celui des attributs de ton objet.. tu fais quoi alors ?
    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class maClasse
    {
    String nom;
    String prenom;
    public maClasse(String nom, String prenom)
    {
        this.nom = nom;
        this.prenom = prenom
    }
    }
    Citation Envoyé par Scronchh Voir le message
    Et super, je peux récupérer les méthodes avec extends, non?
    tu as raison mais ce n'est pas tout

    exemple:

    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
    class A 
    {
      void calcul()
     {
         [..]
     }
    }
    
    class B extends A
    {
    void calcul()//redéfinition de la méthode de la super classe
    {
       calcul();
       [..]
    }
    }
    tu peux me dire quel est le code qui va être exécuté lors de l'appel de la méthode en rouge ? celui de la méthode ds A ou celui de la méthode ds B ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    La méthode A?

  4. #4
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par Scronchh Voir le message
    La méthode A?
    il y a un doute non ?

    dans ce cas, le code de calcul() dans B qui sera exécuté ce qui va entrainer un appel récursive.
    Si tu souhaite exécuter la méthode de la classe mère, alors il FAUT faire

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bon..euh... pour this, j'ai compris
    Mais pour super() j'ai vraiment du mal, tu pourrais re-expliquer une dernière fois avec d'autre exemples stp?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    super est la pour permettre d'appelé la méthode de la Class mère a partir de la Class fille.

    c'est très utile quand la Class fille ajoute du traitement a la méthode de la class mère ou bien a besoin du résultat de la Class mére pour calculer le résultat final.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Points : 83
    Points
    83
    Par défaut
    Il ne faut pas confondre super et super().
    Si je ne dis pas de bétises, super() ne s'utilise que dans un constructeur et que à sa première ligne pour faire appel au constructeur de la classe mère.C'est une instruction implicite.

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 553
    Points : 21 611
    Points
    21 611
    Par défaut
    Citation Envoyé par magikk Voir le message
    Il ne faut pas confondre super et super().
    Si je ne dis pas de bétises, super() ne s'utilise que dans un constructeur et que à sa première ligne pour faire appel au constructeur de la classe mère.C'est une instruction implicite.
    Oui, mais super(arg1, arg2, arg3); s'utilise de la même manière pour appeler le constructeur à 3 arguments de la classe mère. Lui est explicite (parce qu'on ne va pas sortir les arguments à passer de nulle part.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre régulier Avatar de 0redd
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 141
    Points : 79
    Points
    79
    Par défaut
    comme c'est dit, ne confonds pas entre super et super(); c'est deux truc différent,

    this : c'est une référence et elle est ajoutée implicitement quand tu essayes d'accéder a une méthode ou attribut à partir de la même classe.

    super : c'est une référence qui te permet d'accédé aux attributs et méthodes de la super classe; voilà

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class Animal {
    	int a = 10;
    }
     
    class Dog extends Animal {
    	int a = 20;
     
    	public int getA() {
    		a;
    	}
    }
    pour que la méthode te retourne 20 tu peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public int getA() {
    	a;
    }
    //ou
    public int getA() {
    	this.a;
    }
    pour qu'elle te retourne 10:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public int getA() {
    	super.a;
    }
    et c'est aussi valable pour les méthodes comme avais cité slim_java dans son exemple

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/10/2014, 08h39
  2. Problème avec le this en java
    Par sachou19 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 01/05/2014, 17h31
  3. Problème avec this.(a[0],a[1])
    Par nabil.g dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 24/08/2013, 17h48
  4. Petit problème avec this
    Par Jobard81 dans le forum Langage
    Réponses: 7
    Dernier message: 16/02/2009, 14h08
  5. [POO] Problème avec $this de PHP4 à PHP5
    Par c4l3m dans le forum Langage
    Réponses: 19
    Dernier message: 16/02/2007, 09h48

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