This

Résolu/Fermé
Chekchak Messages postés 29 Date d'inscription mardi 31 juillet 2012 Statut Membre Dernière intervention 21 mai 2019 - 15 juin 2016 à 07:34
Chekchak Messages postés 29 Date d'inscription mardi 31 juillet 2012 Statut Membre Dernière intervention 21 mai 2019 - 16 juin 2016 à 06:08
Salut a tous, j'ai commencé a étudier Java sur OpenClassrooms et j'ai bien avancé en 2 jours , mais là je bloque sur un truc .. le mot clé "this" dans une classe , quand on l'utilise par exemple this.setExemple .. pourquoi ne pas setExemple tout simplement tant que cette instruction fait partie de la class ? private veut dire que ces variable et ces methodes appartiennent a la class et l'instruction aussi .. pourquoi utiliser this ?

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 15/06/2016 à 09:54
Bonjour,

Dans la plupart des cas this est implicite (donc facultatif) c'est notamment le cas de ton exemple, tu peux enlever this sans problème, et je te conseille de ne pas le mettre pour ne le garder que si c'est nécessaire.

Les différents cas (utiles) de this :

1) tu as un attribut int x dans ta classe et une méthode set(int x) dans ce cas tu as deux x, le x par défaut étant le paramètre de la méthode, this.x est l'attribut de l'objet d'où les codes this.x=x; que l'on utilise souvent dans les constructeurs et les setters.

2) tu es dans la classe Toto et tu veux utiliser une méthode plop(Toto t), dans ce cas tu peux utiliser this pour passer ton objet courant en paramètre de la méthode avec plop(this)

3) cas particulier où tu as plusieurs constructeurs dans ta classe, si tu veux que le premier constructeur appelle un deuxième constructeur (avec des paramètres par défaut par exemple) il faut utiliser this également.

public class Toto {
    private int x;
    public Toto(int x) {
        this.x=x;
    }
    public Toto() {
        this(0);
    }
}

4) dans le cas de classes imbriquées (programmation avancée) on peut également utiliser this pour indiquer quelle est la classe courante (par défaut c'est la plus imbriquée)

class A {
    class B {
        class C {
            void f() {
                A a = A.this;
                B b = B.this;
                C c = this;
            }
        }
    }
}
La confiance n'exclut pas le contrôle
0
Chekchak Messages postés 29 Date d'inscription mardi 31 juillet 2012 Statut Membre Dernière intervention 21 mai 2019 3
16 juin 2016 à 06:08
Merci beaucoup :)
0