logo

referință „aceasta” în Java

În Java, „aceasta” este o variabilă de referință care se referă la obiectul curent, sau se poate spune că acest lucru în Java este un cuvânt cheie care se referă la instanța obiectului curent. Poate fi folosit pentru a apela metode și câmpuri ale clasei curente, pentru a trece o instanță a clasei curente ca parametru și pentru a diferenția între variabilele locale și variabilele de instanță. Utilizarea acestei referințe poate îmbunătăți lizibilitatea codului și poate reduce conflictele de denumire.

Java acest exemplu de referință

În Java, aceasta este o variabilă de referință care se referă la obiectul curent pe care este invocată metoda sau constructorul. Poate fi folosit pentru a accesa variabilele de instanță și metodele obiectului curent.



Mai jos este implementarea acestei referințe:

Java




porțiune de matrice java





// 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());> >}> }>

>

>

Ieșire

Name: ABC Age: 18 Name: XYZ Age: 22 Name has been changed to: PQR>

Explicaţie

În codul de mai sus, am definit o clasă Persoană cu două câmpuri private nume și vârstă. Am definit constructorul clasei Person pentru a inițializa aceste câmpuri folosind acest cuvânt cheie. De asemenea, am definit metode getter și setter pentru aceste câmpuri care folosesc acest cuvânt cheie pentru a se referi la instanța obiectului curent.

În metoda printDetails(), am folosit acest cuvânt cheie pentru a face referire la instanța obiectului curent și a tipări numele, vârsta și referința la obiect.

În clasa Main, am creat două obiecte Person și am apelat metoda printDetails() pe fiecare obiect. Ieșirea arată numele, vârsta și referința la obiect a fiecărei instanțe de obiect.

Metode de utilizare a „acest lucru” în Java

Următoarele sunt modalitățile de utilizare a cuvântului cheie „acest” în Java menționate mai jos:

  • Folosind cuvântul cheie „acest” pentru a face referire la variabilele de instanță ale clasei curente.
  • Folosind this() pentru a invoca constructorul de clasă curent
  • Folosind cuvântul cheie „acest” pentru a returna instanța curentă a clasei
  • Folosind „acest” cuvânt cheie ca parametru al metodei
  • Folosind cuvântul cheie „acest” pentru a invoca metoda clasei curente
  • Folosind „acest” cuvânt cheie ca argument în apelul constructorului

1. Folosind cuvântul cheie „acest” pentru a face referire la variabilele de instanță ale clasei curente

Java

anulați ultima comitere




// 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();> >}> }>

>

>

Ieșire

a = 10 b = 20>

2. Folosind this() pentru a invoca constructorul de clasă curent

Java




// 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();> >}> }>

>

>

Ieșire

Inside parameterized constructor Inside default constructor>

3. Folosind cuvântul cheie „acest” pentru a returna instanța de clasă curentă

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();> >}> }>

jbutton

>

>

Ieșire

a = 10 b = 20>

4. Utilizarea cuvântului cheie „acest” ca parametru al metodei

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();> >}> }>

>

>

Ieșire

serial în postgres
a = 10 b = 20>

5. Folosind cuvântul cheie „acest” pentru a invoca metoda clasei curente

Java




// 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();> >}> }>

algoritmul Bellford
>

>

Ieșire

Inside show function Inside display function>

6. Folosind cuvântul cheie „acest” ca argument în apelul constructorului

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();> >}> }>

>

>

Ieșire

Value of x in Class B : 5>

Avantajele utilizării „această” referință

Există anumite avantaje ale utilizării „această” referință în Java, așa cum este menționat mai jos:

  1. Vă ajută să faceți distincția între variabilele de instanță și variabilele locale cu același nume.
  2. Poate fi folosit pentru a trece obiectul curent ca argument unei alte metode.
  3. Poate fi folosit pentru a returna obiectul curent dintr-o metodă.
  4. Poate fi folosit pentru a invoca un constructor de la un alt constructor supraîncărcat din aceeași clasă.

Dezavantajele utilizării „această” referință

Deși „această” referință vine cu multe avantaje, există și anumite dezavantaje:

  1. Folosirea excesivă a acestuia poate face codul mai greu de citit și de înțeles.
  2. Folosirea acestui lucru în mod inutil poate adăuga supraîncărcare inutilă programului.
  3. Folosirea acestui lucru într-un context static are ca rezultat o eroare de compilare.
  4. În general, acest cuvânt cheie este un instrument util pentru lucrul cu obiecte în Java, dar ar trebui să fie folosit în mod judicios și numai atunci când este necesar.

Acest articol este contribuit de Mehak Narang și Amit Kumar .