Il peut y avoir beaucoup d'utilisation de Java ce mot-clé . En Java, c'est un variable de référence qui fait référence à l'objet actuel.
Utilisation de Java ce mot-clé
Voici les 6 utilisations de Java pour ce mot-clé.
- cela peut être utilisé pour faire référence à la variable d'instance de classe actuelle.
- cela peut être utilisé pour invoquer la méthode de classe actuelle (implicitement)
- this() peut être utilisé pour appeler le constructeur de classe actuel.
- cela peut être passé comme argument dans l’appel de méthode.
- cela peut être passé comme argument dans l'appel du constructeur.
- cela peut être utilisé pour renvoyer l'instance de classe actuelle à partir de la méthode.
Suggestion: Si vous débutez en Java, recherchez uniquement trois utilisations de ce mot-clé.
1) ceci : pour faire référence à la variable d'instance de classe actuelle
Le mot-clé this peut être utilisé pour faire référence à la variable d'instance de classe actuelle. S'il existe une ambiguïté entre les variables d'instance et les paramètres, ce mot-clé résout le problème d'ambiguïté.
Comprendre le problème sans ce mot-clé
Comprenons le problème si nous n'utilisons pas ce mot-clé par l'exemple donné ci-dessous :
le meilleur sourire du monde
class Student{ int rollno; String name; float fee; Student(int rollno,String name,float fee){ rollno=rollno; name=name; fee=fee; } void display(){System.out.println(rollno+' '+name+' '+fee);} } class TestThis1{ public static void main(String args[]){ Student s1=new Student(111,'ankit',5000f); Student s2=new Student(112,'sumit',6000f); s1.display(); s2.display(); }}Testez-le maintenant
Sortir:
0 null 0.0 0 null 0.0
Dans l'exemple ci-dessus, les paramètres (arguments formels) et les variables d'instance sont identiques. Nous utilisons donc ce mot-clé pour distinguer la variable locale et la variable d'instance.
Solution du problème ci-dessus par ce mot-clé
class Student{ int rollno; String name; float fee; Student(int rollno,String name,float fee){ this.rollno=rollno; this.name=name; this.fee=fee; } void display(){System.out.println(rollno+' '+name+' '+fee);} } class TestThis2{ public static void main(String args[]){ Student s1=new Student(111,'ankit',5000f); Student s2=new Student(112,'sumit',6000f); s1.display(); s2.display(); }}Testez-le maintenant
Sortir:
111 ankit 5000.0 112 sumit 6000.0
Si les variables locales (arguments formels) et les variables d'instance sont différentes, il n'est pas nécessaire d'utiliser ce mot-clé comme dans le programme suivant :
Programme où ce mot-clé n'est pas requis
class Student{ int rollno; String name; float fee; Student(int r,String n,float f){ rollno=r; name=n; fee=f; } void display(){System.out.println(rollno+' '+name+' '+fee);} } class TestThis3{ public static void main(String args[]){ Student s1=new Student(111,'ankit',5000f); Student s2=new Student(112,'sumit',6000f); s1.display(); s2.display(); }}Testez-le maintenant
Sortir:
111 ankit 5000.0 112 sumit 6000.0
Il est préférable d'utiliser des noms significatifs pour les variables. Nous utilisons donc le même nom pour les variables d'instance et les paramètres en temps réel, et utilisons toujours ce mot-clé.
2) ceci : pour invoquer la méthode de classe actuelle
Vous pouvez appeler la méthode de la classe actuelle en utilisant le mot-clé this. Si vous n'utilisez pas le mot-clé this, le compilateur ajoute automatiquement ce mot-clé lors de l'appel de la méthode. Voyons l'exemple
class A{ void m(){System.out.println('hello m');} void n(){ System.out.println('hello n'); //m();//same as this.m() this.m(); } } class TestThis4{ public static void main(String args[]){ A a=new A(); a.n(); }}Testez-le maintenant
Sortir:
réseaux informatiques
hello n hello m
3) this() : pour invoquer le constructeur de classe actuel
L'appel au constructeur this() peut être utilisé pour appeler le constructeur de classe actuel. Il permet de réutiliser le constructeur. En d’autres termes, il est utilisé pour le chaînage des constructeurs.
Appel du constructeur par défaut à partir du constructeur paramétré :
class A{ A(){System.out.println('hello a');} A(int x){ this(); System.out.println(x); } } class TestThis5{ public static void main(String args[]){ A a=new A(10); }}Testez-le maintenant
Sortir:
hello a 10
Appel du constructeur paramétré à partir du constructeur par défaut :
aussi modèle
class A{ A(){ this(5); System.out.println('hello a'); } A(int x){ System.out.println(x); } } class TestThis6{ public static void main(String args[]){ A a=new A(); }}Testez-le maintenant
Sortir:
5 hello a
Utilisation réelle de l'appel du constructeur this()
L'appel au constructeur this() doit être utilisé pour réutiliser le constructeur du constructeur. Il maintient la chaîne entre les constructeurs, c'est-à-dire qu'il est utilisé pour le chaînage des constructeurs. Voyons l'exemple ci-dessous qui montre l'utilisation réelle de ce mot-clé.
class Student{ int rollno; String name,course; float fee; Student(int rollno,String name,String course){ this.rollno=rollno; this.name=name; this.course=course; } Student(int rollno,String name,String course,float fee){ this(rollno,name,course);//reusing constructor this.fee=fee; } void display(){System.out.println(rollno+' '+name+' '+course+' '+fee);} } class TestThis7{ public static void main(String args[]){ Student s1=new Student(111,'ankit','java'); Student s2=new Student(112,'sumit','java',6000f); s1.display(); s2.display(); }}Testez-le maintenant
Sortir:
111 ankit java 0.0 112 sumit java 6000.0
Règle : l'appel à this() doit être la première instruction du constructeur.
class Student{ int rollno; String name,course; float fee; Student(int rollno,String name,String course){ this.rollno=rollno; this.name=name; this.course=course; } Student(int rollno,String name,String course,float fee){ this.fee=fee; this(rollno,name,course);//C.T.Error } void display(){System.out.println(rollno+' '+name+' '+course+' '+fee);} } class TestThis8{ public static void main(String args[]){ Student s1=new Student(111,'ankit','java'); Student s2=new Student(112,'sumit','java',6000f); s1.display(); s2.display(); }}Testez-le maintenant
Sortir:
Compile Time Error: Call to this must be first statement in constructor
4) ceci : à passer en argument dans la méthode
Le mot clé this peut également être passé en argument dans la méthode. Il est principalement utilisé dans la gestion des événements. Voyons l'exemple :
class S2{ void m(S2 obj){ System.out.println('method is invoked'); } void p(){ m(this); } public static void main(String args[]){ S2 s1 = new S2(); s1.p(); } }Testez-le maintenant
Sortir:
method is invoked
Application de ceci qui peut être passé en argument :
Dans la gestion d'événements (ou) dans une situation où nous devons fournir une référence d'une classe à une autre. Il est utilisé pour réutiliser un objet dans plusieurs méthodes.
5) this : à passer en argument dans l'appel du constructeur
Nous pouvons également transmettre le mot-clé this dans le constructeur. C'est utile si nous devons utiliser un objet dans plusieurs classes. Voyons l'exemple :
taille du texte en latex
class B{ A4 obj; B(A4 obj){ this.obj=obj; } void display(){ System.out.println(obj.data);//using data member of A4 class } } class A4{ int data=10; A4(){ B b=new B(this); b.display(); } public static void main(String args[]){ A4 a=new A4(); } }Testez-le maintenant
Output:10
6) ce mot-clé peut être utilisé pour renvoyer l'instance de classe actuelle
Nous pouvons renvoyer ce mot-clé sous forme d'instruction de la méthode. Dans ce cas, le type de retour de la méthode doit être le type de classe (non primitif). Voyons l'exemple :
Syntaxe de this qui peut être renvoyée sous forme d'instruction
return_type method_name(){ return this; }
Exemple de ce mot-clé que vous renvoyez sous forme d'instruction de la méthode
class A{ A getA(){ return this; } void msg(){System.out.println('Hello java');} } class Test1{ public static void main(String args[]){ new A().getA().msg(); } }Testez-le maintenant
Sortir:
Hello java
Prouver ce mot-clé
Montrons que ce mot-clé fait référence à la variable d'instance de classe actuelle. Dans ce programme, nous imprimons la variable de référence et ce, la sortie des deux variables est la même.
class A5{ void m(){ System.out.println(this);//prints same reference ID } public static void main(String args[]){ A5 obj=new A5(); System.out.println(obj);//prints the reference ID obj.m(); } }Testez-le maintenant
Sortir:
A5@22b3ea59 A5@22b3ea59