4 réponses
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 004
5 avril 2012 à 19:43
5 avril 2012 à 19:43
this c'est l'objet courant qui dispose de propriétés, ici par exemple il y en a 4 : x, y, largeur, et longueur.
Si on était super rigoureux il faudrait toujours utiliser this de sorte à toujours avoir une méthode qui s'applique à un objet (ou à une classe).
Mais en pratique, this est oublié, et une méthode qui est appelé sans objet est appliquée implicitement à l'objet courant this.
Par contre, ici c'est obligatoire d'utiliser this car il y a ambiguïté entre le nom des paramètres x et y, et des propriétés de l'objet qui s'appellent x et y aussi.
Dans ce cas précis, ce sont les paramètres qui sont prioritaires, car ils ne peuvent pas s'écrire autrement, alors que les propriétés peuvent être identifiées autrement (par this).
Sinon "x+=dx" c'est juste un raccourci fréquemment utilisé mais équivalent à "x=x+dx", à part pour les pros de l'assembleur qui diront que "x+=dx" est moins coûteux car il n'y a pas à stocker la mémoire temporaire du résultat "x+dx" avant de l'affecter à x, donc c'est bien de privilégier l'écriture += même si je ne suis pas sûr que cela change grand chose en Java...
Si on était super rigoureux il faudrait toujours utiliser this de sorte à toujours avoir une méthode qui s'applique à un objet (ou à une classe).
Rectangle(int x, int y, int la, int lo)
{
this.x = x;
this.y = y;
this.largeur = la;
this.longueur = lo;
}
Mais en pratique, this est oublié, et une méthode qui est appelé sans objet est appliquée implicitement à l'objet courant this.
Par contre, ici c'est obligatoire d'utiliser this car il y a ambiguïté entre le nom des paramètres x et y, et des propriétés de l'objet qui s'appellent x et y aussi.
Dans ce cas précis, ce sont les paramètres qui sont prioritaires, car ils ne peuvent pas s'écrire autrement, alors que les propriétés peuvent être identifiées autrement (par this).
Sinon "x+=dx" c'est juste un raccourci fréquemment utilisé mais équivalent à "x=x+dx", à part pour les pros de l'assembleur qui diront que "x+=dx" est moins coûteux car il n'y a pas à stocker la mémoire temporaire du résultat "x+dx" avant de l'affecter à x, donc c'est bien de privilégier l'écriture += même si je ne suis pas sûr que cela change grand chose en Java...
mousekey
Messages postés
68
Date d'inscription
dimanche 13 février 2005
Statut
Membre
Dernière intervention
22 novembre 2014
4
Modifié par baladur13 le 13/04/2012 à 22:39
Modifié par baladur13 le 13/04/2012 à 22:39
this est un pointeur vers la classe actuelle... c'est le toi ...
Signature non conforme Modération CCM
Signature non conforme Modération CCM
"x+=dx" j'ai compris
pour le "this" toujours dans incompréhension total
svp donnez moi plus de temps de m'expliquer a
pour le "this" toujours dans incompréhension total
svp donnez moi plus de temps de m'expliquer a
"this c'est l'objet courant qui dispose de propriétés, ici par exemple il y en a 4 : x, y, largeur, et longueur. "
this.x = x; this.y = y;
x,y,largeur,et longeur sont déjà déclaré,
pourquoi encore une on dit
this.x=x;this.y=y;
this.x = x; this.y = y;
x,y,largeur,et longeur sont déjà déclaré,
pourquoi encore une on dit
this.x=x;this.y=y;
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 004
5 avril 2012 à 20:42
5 avril 2012 à 20:42
Parce qu'être déclaré c'est bien, mais encore faut-il pouvoir les utiliser !!!
Voici par exemple un code qui ne fonctionne pas comme on voudrait :
Dans l'affectation x = x; Java ne peut pas comprendre que le x de gauche est différent de celui de droite. En fait ce sont les deux mêmes, c'est celui qui est passé en paramètre du constructeur.
Alors comment utiliser le "x" qui est déjà déclaré ? Réponse : en utilisant this.x !
Pourquoi ? Parce que tu es en train de développer une méthode (ici un constructeur) qui va s'appliquer à un objet en particulier. Or cet objet qui c'est ??? C'est this !
Voici par exemple un code qui ne fonctionne pas comme on voudrait :
public class Simple
{
int x;
public Simple(int x)
{
x = x;
}
}
Dans l'affectation x = x; Java ne peut pas comprendre que le x de gauche est différent de celui de droite. En fait ce sont les deux mêmes, c'est celui qui est passé en paramètre du constructeur.
Alors comment utiliser le "x" qui est déjà déclaré ? Réponse : en utilisant this.x !
Pourquoi ? Parce que tu es en train de développer une méthode (ici un constructeur) qui va s'appliquer à un objet en particulier. Or cet objet qui c'est ??? C'est this !