Java this.

Résolu
y2jeff Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   -  
y2jeff Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,


J'ai du mal a comprendre le this. en java.

D'apres ce que j'ai compris il a le meme rôle que les getters (get.) et setters (set.) .
Sauf qu'on utilise le this pour les variable private se trouvant dans la meme classe.
On utilise le get. et set. pour les variables se trouvant dans d'autres classes.

Es ce bien ca?
A voir également:

8 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Pas du tout ! Ou alors de très très loin...

Lorsque tu créés un objet, tu fais appel à son constructeur, et tu en récupères un référence
Object obj = new Object(); // obj est une référence à l'objet créé.

Une méthode s'applique à un objet en particulier, par exemple : obj.toString()

Le problème c'est que lorsque tu crées ta propre classe, tu vas définir des méthodes sans connaître d'avance la référence qui sera utilisée. C'est à ça que sers le mot-clé this, c'est une référence sur l'objet utilisé.

Exemple :

public class Tata  
{  
    private int n = 3;  

    public int toto()  
    {  
        return this.n;  
    }  

    public static void main(String...args)  
    {  
        Tata titi = new Tata();  
        int a = titi.toto(); // le "this" dans la méthode toto() correspond à la référence "titi", c'est donc équivalent (dans ce cas) à faire "titi.n"  
    }  
}

Remarque : dans de nombreux cas, le this est implicite, c'est à dire qu'on peux l'omettre, sans risque de confusion. Ici j'aurais pu faire directement return n;

Voici un exemple (presque) concret où this est utile :

public class Reel 
{ 
    private double x; 

    public Reel(double val) 
    { 
        x = val; 
    } 

    public Reel multiplier(Reel r) 
    { 
        return new Reel(this.x * r.x); // on multiplie la valeur courante par celle de r 
        // ou avec le this implicite : return new Reel(x * r.x); 
    } 

    public Reel carre() 
    { 
        return this.multiplier(this); // on se multiplie soi même 
        // ou avec le this implicite : return multiplier(this); 
        // ici le mot-clé this est nécessaire pour la méthode "multiplier" 
    } 
}
La confiance n'exclut pas le contrôle
2