Java valodā “this” ir atsauces mainīgais, kas attiecas uz pašreizējo objektu, vai var teikt, ka Java ir atslēgvārds, kas attiecas uz pašreizējo objekta gadījumu. To var izmantot, lai izsauktu pašreizējās klases metodes un laukus, nodotu pašreizējās klases gadījumu kā parametru un atšķirtu vietējos un instances mainīgos. Šīs atsauces izmantošana var uzlabot koda lasāmību un samazināt nosaukumu konfliktus.
Java šī atsauces piemērs
Java versijā tas ir atsauces mainīgais, kas attiecas uz pašreizējo objektu, kurā tiek izsaukta metode vai konstruktors. To var izmantot, lai piekļūtu pašreizējā objekta gadījumu mainīgajiem un metodēm.
Tālāk ir norādīta šīs atsauces īstenošana:
Java
atsperu moduļi
// Java Program to implement> // Java this reference> // Driver Class> public> class> Person {> > // Fields Declared> > String name;> > int> age;> > // Constructor> > Person(String name,> int> age)> > {> > this> .name = name;> > this> .age = age;> > }> > // Getter for name> > public> String get_name() {> return> name; }> > // Setter for name> > public> void> change_name(String name)> > {> > this> .name = name;> > }> > // Method to Print the Details of> > // the person> > public> void> printDetails()> > {> > System.out.println(> 'Name: '> +> this> .name);> > System.out.println(> 'Age: '> +> this> .age);> > System.out.println();> > }> > // main function> > public> static> void> main(String[] args)> > {> > // Objects Declared> > Person first => new> Person(> 'ABC'> ,> 18> );> > Person second => new> Person(> 'XYZ'> ,> 22> );> > first.printDetails();> > second.printDetails();> > first.change_name(> 'PQR'> );> > System.out.println(> 'Name has been changed to: '> > + first.get_name());> > }> }> |
>
>Izvade
Name: ABC Age: 18 Name: XYZ Age: 22 Name has been changed to: PQR>
Paskaidrojums
Iepriekš minētajā kodā mēs esam definējuši Personas klasi ar diviem privātiem laukiem nosaukumu un vecumu. Mēs esam definējuši Personu klases konstruktoru, lai inicializētu šos laukus, izmantojot šo atslēgvārdu. Šiem laukiem esam definējuši arī ieguvēja un iestatītāja metodes, kas izmanto šo atslēgvārdu, lai atsauktos uz pašreizējo objekta gadījumu.
Metodē printDetails() mēs esam izmantojuši šo atslēgvārdu, lai atsauktos uz pašreizējo objekta gadījumu un izdrukātu tā nosaukumu, vecumu un objekta atsauci.
Galvenajā klasē esam izveidojuši divus Personas objektus un katram objektam izsaucām metodi printDetails(). Izvade parāda katra objekta gadījuma nosaukumu, vecumu un objekta atsauci.
Metodes, kā izmantot “šo” Java
Tālāk ir norādīti veidi, kā izmantot atslēgvārdu “šo” Java:
- Atslēgvārda “this” izmantošana, lai atsauktos uz pašreizējiem klases gadījumiem mainīgajiem.
- Izmantojot šo (), lai izsauktu pašreizējo klases konstruktoru
- Atslēgvārda “šo” izmantošana, lai atgrieztu pašreizējo klases gadījumu
- Izmantojot atslēgvārdu “šo” kā metodes parametru
- Atslēgvārda “šo” izmantošana, lai izsauktu pašreizējo klases metodi
- Izmantojot atslēgvārdu “šo” kā argumentu konstruktora izsaukumā
1. Atslēgvārda “šo” izmantošana, lai atsauktos uz pašreizējiem klases gadījumu mainīgajiem
Java
// Java code for using 'this' keyword to> // refer current class instance variables> class> Test {> > int> a;> > int> b;> > // Parameterized constructor> > Test(> int> a,> int> b)> > {> > this> .a = a;> > this> .b = b;> > }> > void> display()> > {> > // Displaying value of variables a and b> > System.out.println(> 'a = '> + a +> ' b = '> + b);> > }> > public> static> void> main(String[] args)> > {> > Test object => new> Test(> 10> ,> 20> );> > object.display();> > }> }> |
>
>Izvade
a = 10 b = 20>
2. Izmantojot šo(), lai izsauktu pašreizējo klases konstruktoru
Java
zeenat aman aktieris
// Java code for using this() to> // invoke current class constructor> class> Test {> > int> a;> > int> b;> > // Default constructor> > Test()> > {> > this> (> 10> ,> 20> );> > System.out.println(> > 'Inside default constructor
'> );> > }> > // Parameterized constructor> > Test(> int> a,> int> b)> > {> > this> .a = a;> > this> .b = b;> > System.out.println(> > 'Inside parameterized constructor'> );> > }> > public> static> void> main(String[] args)> > {> > Test object => new> Test();> > }> }> |
mac operētājsistēmas
>
>Izvade
Inside parameterized constructor Inside default constructor>
3. Izmantojiet atslēgvārdu “šo”, lai atgrieztu pašreizējo klases gadījumu
Java
// Java code for using 'this' keyword> // to return the current class instance> class> Test {> > int> a;> > int> b;> > // Default constructor> > Test()> > {> > a => 10> ;> > b => 20> ;> > }> > // Method that returns current class instance> > Test get() {> return> this> ; }> > // Displaying value of variables a and b> > void> display()> > {> > System.out.println(> 'a = '> + a +> ' b = '> + b);> > }> > public> static> void> main(String[] args)> > {> > Test object => new> Test();> > object.get().display();> > }> }> |
>
>Izvade
a = 10 b = 20>
4. Atslēgvārda “this” izmantošana kā metodes parametrs
Java
// Java code for using 'this'> // keyword as method parameter> class> Test {> > int> a;> > int> b;> > // Default constructor> > Test()> > {> > a => 10> ;> > b => 20> ;> > }> > // Method that receives 'this' keyword as parameter> > void> display(Test obj)> > {> > System.out.println(> 'a = '> + obj.a> > +> ' b = '> + obj.b);> > }> > // Method that returns current class instance> > void> get() { display(> this> ); }> > // main function> > public> static> void> main(String[] args)> > {> > Test object => new> Test();> > object.get();> > }> }> |
>
>Izvade
a = 10 b = 20>
5. Izmantojiet atslēgvārdu “šo”, lai izsauktu pašreizējo klases metodi
Java
1. kārtas loģika
// Java code for using this to invoke current> // class method> class> Test {> > void> display()> > {> > // calling function show()> > this> .show();> > System.out.println(> 'Inside display function'> );> > }> > void> show()> > {> > System.out.println(> 'Inside show function'> );> > }> > public> static> void> main(String args[])> > {> > Test t1 => new> Test();> > t1.display();> > }> }> |
>
>Izvade
Inside show function Inside display function>
6. Atslēgvārda “this” izmantošana kā arguments konstruktora izsaukumā
Java
// Java code for using this as an argument in constructor> // call> // Class with object of Class B as its data member> class> A {> > B obj;> > // Parameterized constructor with object of B> > // as a parameter> > A(B obj)> > {> > this> .obj = obj;> > // calling display method of class B> > obj.display();> > }> }> class> B {> > int> x => 5> ;> > // Default Constructor that create an object of A> > // with passing this as an argument in the> > // constructor> > B() { A obj => new> A(> this> ); }> > // method to show value of x> > void> display()> > {> > System.out.println(> 'Value of x in Class B : '> + x);> > }> > public> static> void> main(String[] args)> > {> > B obj => new> B();> > }> }> |
>
>
java int kā virkneIzvade
Value of x in Class B : 5>
“Šīs” atsauces izmantošanas priekšrocības
Šīs atsauces izmantošanai Java programmā ir noteiktas priekšrocības, kā minēts tālāk:
- Tas palīdz atšķirt gadījumu mainīgos un vietējos mainīgos ar tādu pašu nosaukumu.
- To var izmantot, lai nodotu pašreizējo objektu kā argumentu citai metodei.
- To var izmantot, lai atgrieztu pašreizējo objektu no metodes.
- To var izmantot, lai izsauktu konstruktoru no cita pārslogota konstruktora tajā pašā klasē.
“Šīs” atsauces lietošanas trūkumi
Lai gan šai atsaucei ir daudz priekšrocību, ir arī daži trūkumi:
- Pārmērīga tā izmantošana var padarīt kodu grūtāk lasāmu un saprotamu.
- Lietojot to bez vajadzības, programma var radīt nevajadzīgas pieskaitāmās izmaksas.
- Izmantojot to statiskā kontekstā, rodas kompilēšanas laika kļūda.
- Kopumā šis atslēgvārds ir noderīgs rīks darbam ar objektiem Java, taču tas ir jāizmanto saprātīgi un tikai nepieciešamības gadījumā.
Šī raksta autors ir Mehaks Narangs un Amits Kumars .