Javassa 'this' on viitemuuttuja, joka viittaa nykyiseen objektiin, tai voidaan sanoa, että Java on avainsana, joka viittaa nykyiseen objektiinstanssiin. Sitä voidaan käyttää kutsumaan nykyisen luokan menetelmiä ja kenttiä, välittämään nykyisen luokan ilmentymä parametrina ja erottamaan paikalliset ja ilmentymämuuttujat. Tämän viitteen käyttäminen voi parantaa koodin luettavuutta ja vähentää nimeämisristiriitoja.
Java tämä viiteesimerkki
Javassa tämä on viitemuuttuja, joka viittaa nykyiseen objektiin, jossa menetelmää tai rakentajaa kutsutaan. Sitä voidaan käyttää nykyisen objektin ilmentymämuuttujien ja menetelmien käyttämiseen.
Alla on tämän viittauksen toteutus:
Java
kuinka poistat valinnan gimpissä
// 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());> > }> }> |
>
>Lähtö
Name: ABC Age: 18 Name: XYZ Age: 22 Name has been changed to: PQR>
Selitys
Yllä olevaan koodiin olemme määrittäneet Henkilö-luokan, jossa on kaksi yksityistä kenttää nimi ja ikä. Olemme määrittäneet Person-luokan konstruktorin alustamaan nämä kentät tällä avainsanalla. Olemme myös määrittäneet näille kentille getter- ja setter-menetelmät, jotka käyttävät tätä avainsanaa viittaamaan nykyiseen objektiinstanssiin.
PrintDetails()-menetelmässä olemme käyttäneet tätä avainsanaa viittaamaan nykyiseen objektiinstanssiin ja tulostamaan sen nimen, iän ja objektiviittauksen.
Pääluokassa olemme luoneet kaksi Person-objektia ja kutsuneet jokaiselle objektille printDetails()-metodia. Tulos näyttää kunkin objektiinstanssin nimen, iän ja objektiviittauksen.
Menetelmät käyttää 'tätä' Javassa
Seuraavassa on alla mainittuja tapoja käyttää 'tätä' avainsanaa Javassa:
- 'Tämä'-avainsanan käyttäminen viittaamaan nykyisiin luokan ilmentymämuuttujiin.
- Käytä tätä() nykyisen luokan rakentajan kutsumiseen
- Tämän avainsanan käyttäminen nykyisen luokan esiintymän palauttamiseen
- Käytä 'tätä' avainsanaa menetelmäparametrina
- Tämän avainsanan käyttäminen nykyisen luokan menetelmän kutsumiseen
- 'Tämän' avainsanan käyttäminen argumenttina konstruktorikutsussa
1. Tämän avainsanan käyttäminen viittaamaan nykyisiin luokan ilmentymämuuttujiin
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();> > }> }> |
>
>Lähtö
a = 10 b = 20>
2. Käytä tätä() nykyisen luokan rakentajan kutsumiseen
Java
np piste
// 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();> > }> }> |
miksi merkkijono muuttumaton javassa
>
>Lähtö
Inside parameterized constructor Inside default constructor>
3. Käytä 'tätä' avainsanaa nykyisen luokan esiintymän palauttamiseen
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();> > }> }> |
>
>Lähtö
a = 10 b = 20>
4. Tämän avainsanan käyttäminen menetelmäparametrina
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();> > }> }> |
>
>Lähtö
a = 10 b = 20>
5. Tämän avainsanan käyttäminen nykyisen luokan menetelmän kutsumiseen
Java
java katkeaa silmukasta
// 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();> > }> }> |
>
>Lähtö
Inside show function Inside display function>
6. Tämän avainsanan käyttäminen argumenttina konstruktorikutsussa
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();> > }> }> |
>
git pull origin master
>Lähtö
Value of x in Class B : 5>
'Tämän' viittauksen käytön edut
'Tämän' viittauksen käyttämisessä Javassa on tiettyjä etuja, kuten alla mainitaan:
- Se auttaa erottamaan ilmentymämuuttujat ja paikalliset muuttujat, joilla on sama nimi.
- Sitä voidaan käyttää nykyisen objektin välittämiseen argumenttina toiselle menetelmälle.
- Sitä voidaan käyttää nykyisen objektin palauttamiseen menetelmästä.
- Sitä voidaan käyttää rakentajan kutsumiseen toisesta ylikuormitetusta konstruktorista samassa luokassa.
'Tämän' viittauksen käytön haitat
Vaikka 'tällä' viitteellä on monia etuja, on myös tiettyjä haittoja:
- Tämän liiallinen käyttö voi tehdä koodista vaikeampaa lukea ja ymmärtää.
- Tämän tarpeeton käyttö voi lisätä tarpeettomia lisäkustannuksia ohjelmaan.
- Tämän käyttäminen staattisessa kontekstissa johtaa käännösaikavirheeseen.
- Kaiken kaikkiaan tämä avainsana on hyödyllinen työkalu Java-objektien kanssa työskentelyyn, mutta sitä tulee käyttää harkiten ja vain tarvittaessa.
Tämän artikkelin on kirjoittanut Mehak Narang ja Amit Kumar .