logo

'denna' referens i Java

I Java är 'detta' en referensvariabel som hänvisar till det aktuella objektet, eller kan sägas att detta i Java är ett nyckelord som hänvisar till den aktuella objektinstansen. Den kan användas för att anropa aktuella klassmetoder och fält, för att skicka en instans av den aktuella klassen som en parameter och för att skilja mellan de lokala variablerna och instansvariablerna. Att använda denna referens kan förbättra kodläsbarheten och minska namnkonflikter.

Java denna referens Exempel

I Java är detta en referensvariabel som refererar till det aktuella objektet på vilket metoden eller konstruktorn anropas. Den kan användas för att komma åt instansvariabler och metoder för det aktuella objektet.

Nedan är implementeringen av denna referens:



Java


ordning efter slumpmässig sql



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

>

>

Produktion

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

Förklaring

I ovanstående kod har vi definierat en personklass med två privata fält namn och ålder. Vi har definierat klasskonstruktorn Person för att initiera dessa fält med detta nyckelord. Vi har också definierat getter- och settermetoder för dessa fält som använder detta nyckelord för att referera till den aktuella objektinstansen.

I metoden printDetails() har vi använt detta nyckelord för att referera till den aktuella objektinstansen och skriva ut dess namn, ålder och objektreferens.

I klassen Main har vi skapat två Person-objekt och kallat metoden printDetails() på varje objekt. Utdata visar namn, ålder och objektreferens för varje objektinstans.

Metoder för att använda 'detta' i Java

Följande är sätten att använda 'detta' nyckelordet i Java som nämns nedan:

  • Använd nyckelordet 'this' för att referera till aktuella klassinstansvariabler.
  • Använda this() för att anropa den aktuella klasskonstruktorn
  • Använda 'detta' nyckelord för att returnera den aktuella klassinstansen
  • Använder 'det här' nyckelordet som metodparameter
  • Använda 'detta' nyckelord för att anropa den aktuella klassmetoden
  • Använder 'detta' nyckelord som ett argument i konstruktoranropet

1. Använd nyckelordet 'detta' för att referera till aktuella klassinstansvariabler

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

>

>

Produktion

a = 10 b = 20>

2. Använda this() för att anropa aktuell klasskonstruktor

Java

java-operatörer




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

>

>

Produktion

Inside parameterized constructor Inside default constructor>

3. Använd nyckelordet 'detta' för att returnera den aktuella klassinstansen

Java


primär nyckel sammansatt nyckel



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

>

>

Produktion

a = 10 b = 20>

4. Använd 'detta' nyckelord som en metodparameter

Java


chown kommando



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

>

>

Produktion

a = 10 b = 20>

5. Använd 'detta' nyckelord för att anropa den aktuella klassmetoden

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

>

>

Produktion

Inside show function Inside display function>

6. Använda 'detta' nyckelord som ett argument i konstruktoranropet

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

sträng i c++
>

>

Produktion

Value of x in Class B : 5>

Fördelar med att använda 'denna' referens

Det finns vissa fördelar med att använda 'denna' referens i Java som nämns nedan:

  1. Det hjälper till att skilja mellan instansvariabler och lokala variabler med samma namn.
  2. Den kan användas för att skicka det aktuella objektet som ett argument till en annan metod.
  3. Den kan användas för att returnera det aktuella objektet från en metod.
  4. Den kan användas för att anropa en konstruktor från en annan överbelastad konstruktor i samma klass.

Nackdelar med att använda 'denna' referens

Även om 'denna' referens kommer med många fördelar finns det vissa nackdelar med också:

  1. Överanvändning av detta kan göra koden svårare att läsa och förstå.
  2. Att använda detta i onödan kan lägga till onödiga overhead till programmet.
  3. Att använda detta i ett statiskt sammanhang resulterar i ett kompileringsfel.
  4. Sammantaget är detta nyckelord ett användbart verktyg för att arbeta med objekt i Java, men det bör användas med omtanke och endast när det är nödvändigt.

Denna artikel är bidragit av Mehak Narang och Amit Kumar .