This

Résolu
Chekchak Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   -  
Chekchak Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention   3
 
Merci beaucoup :)
0