logo

'denne' referansen i Java

I Java er 'dette' en referansevariabel som refererer til det gjeldende objektet, eller kan sies at dette i Java er et nøkkelord som refererer til den gjeldende objektforekomsten. Den kan brukes til å kalle gjeldende klassemetoder og felt, for å sende en forekomst av gjeldende klasse som en parameter, og for å skille mellom de lokale og forekomstvariablene. Bruk av denne referansen kan forbedre kodelesbarheten og redusere navnekonflikter.

Java denne referansen Eksempel

I Java er dette en referansevariabel som refererer til det gjeldende objektet som metoden eller konstruktøren påkalles på. Den kan brukes til å få tilgang til instansvariabler og metoder for gjeldende objekt.



Nedenfor er implementeringen av denne referansen:

Java




forskjellen mellom en tiger og en løve





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

>

>

Produksjon

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

Forklaring

I koden ovenfor har vi definert en personklasse med to private felt navn og alder. Vi har definert Person-klassekonstruktøren for å initialisere disse feltene ved å bruke dette nøkkelordet. Vi har også definert getter- og settermetoder for disse feltene som bruker dette nøkkelordet for å referere til gjeldende objektforekomst.

I printDetails()-metoden har vi brukt dette nøkkelordet for å referere til gjeldende objektforekomst og skrive ut navnet, alderen og objektreferansen.

I Main-klassen har vi laget to Person-objekter og kalt printDetails()-metoden på hvert objekt. Utdataene viser navn, alder og objektreferanse for hver objektforekomst.

Metoder for å bruke 'dette' i Java

Følgende er måtene å bruke 'dette' nøkkelordet i Java nevnt nedenfor:

  • Bruke nøkkelordet 'dette' for å referere til gjeldende klasseforekomstvariabler.
  • Bruke denne() for å starte den gjeldende klassekonstruktøren
  • Bruke «dette» nøkkelord for å returnere gjeldende klasseforekomst
  • Bruker «dette» nøkkelordet som metodeparameter
  • Bruke «dette» nøkkelord for å påkalle gjeldende klassemetode
  • Bruker «dette» nøkkelordet som argument i konstruktørkallet

1. Bruke «this» nøkkelord for å referere til gjeldende klasseforekomstvariabler

Java




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

>

>

Produksjon

a = 10 b = 20>

2. Bruke denne() for å starte gjeldende klassekonstruktør

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

>

>

Produksjon

Inside parameterized constructor Inside default constructor>

3. Bruke «this» nøkkelord for å returnere gjeldende klasseforekomst

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

>

les json-filer

>

Produksjon

bash delt streng med skilletegn
a = 10 b = 20>

4. Bruke «dette» søkeordet som en metodeparameter

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

>

>

Produksjon

a = 10 b = 20>

5. Bruke «this» nøkkelord for å påkalle gjeldende klassemetode

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

>

>

Produksjon

java eksempelkode
Inside show function Inside display function>

6. Bruke «dette» nøkkelordet som argument i konstruktørkallet

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

>

>

Produksjon

Value of x in Class B : 5>

Fordeler med å bruke 'denne' referansen

Det er visse fordeler med å bruke 'denne' referansen i Java som nevnt nedenfor:

  1. Det hjelper å skille mellom forekomstvariabler og lokale variabler med samme navn.
  2. Den kan brukes til å sende det gjeldende objektet som et argument til en annen metode.
  3. Den kan brukes til å returnere gjeldende objekt fra en metode.
  4. Den kan brukes til å påkalle en konstruktør fra en annen overbelastet konstruktør i samme klasse.

Ulemper ved å bruke 'denne' referansen

Selv om 'denne' referansen har mange fordeler, er det visse ulemper ved også:

  1. Overbruk av dette kan gjøre koden vanskeligere å lese og forstå.
  2. Unødvendig bruk av dette kan legge til unødvendig overhead til programmet.
  3. Bruk av dette i en statisk kontekst resulterer i en kompileringstidsfeil.
  4. Totalt sett er dette nøkkelordet et nyttig verktøy for å jobbe med objekter i Java, men det bør brukes fornuftig og bare når det er nødvendig.

Denne artikkelen er bidratt av Mehak Narang og Amit Kumar .