Java this.

Résolu/Fermé
y2jeff Messages postés 78 Date d'inscription jeudi 22 décembre 2011 Statut Membre Dernière intervention 24 janvier 2013 - 22 mai 2012 à 22:13
y2jeff Messages postés 78 Date d'inscription jeudi 22 décembre 2011 Statut Membre Dernière intervention 24 janvier 2013 - 23 mai 2012 à 19:49
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 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
Modifié par KX le 22/05/2012 à 23:00
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