logo

'tämä' viittaus Javassa

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:

  1. Se auttaa erottamaan ilmentymämuuttujat ja paikalliset muuttujat, joilla on sama nimi.
  2. Sitä voidaan käyttää nykyisen objektin välittämiseen argumenttina toiselle menetelmälle.
  3. Sitä voidaan käyttää nykyisen objektin palauttamiseen menetelmästä.
  4. 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:

  1. Tämän liiallinen käyttö voi tehdä koodista vaikeampaa lukea ja ymmärtää.
  2. Tämän tarpeeton käyttö voi lisätä tarpeettomia lisäkustannuksia ohjelmaan.
  3. Tämän käyttäminen staattisessa kontekstissa johtaa käännösaikavirheeseen.
  4. 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 .