I Java er 'dette' en referencevariabel, der refererer til det aktuelle objekt, eller det kan siges, at dette i Java er et nøgleord, der refererer til den aktuelle objektinstans. Den kan bruges til at kalde aktuelle klassemetoder og felter, til at videregive en instans af den aktuelle klasse som en parameter og til at skelne mellem de lokale og instansvariabler. Brug af denne reference kan forbedre kodelæsbarheden og reducere navnekonflikter.
Java denne reference Eksempel
I Java er dette en referencevariabel, der refererer til det aktuelle objekt, som metoden eller konstruktøren påkaldes på. Det kan bruges til at få adgang til instansvariabler og metoder for det aktuelle objekt.
Nedenfor er implementeringen af denne reference:
Java
hvordan man returnerer array i 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());> > }> }> |
>
>Produktion
Name: ABC Age: 18 Name: XYZ Age: 22 Name has been changed to: PQR>
Forklaring
I ovenstående kode har vi defineret en personklasse med to private felter navn og alder. Vi har defineret Person-klassekonstruktøren til at initialisere disse felter ved hjælp af dette nøgleord. Vi har også defineret getter- og setter-metoder for disse felter, som bruger dette nøgleord til at referere til den aktuelle objektinstans.
I metoden printDetails() har vi brugt dette nøgleord til at henvise til den aktuelle objektforekomst og udskrive dens navn, alder og objektreference.
I Main-klassen har vi oprettet to Person-objekter og kaldt printDetails()-metoden på hvert objekt. Outputtet viser navn, alder og objektreference for hver objektforekomst.
Metoder til at bruge 'dette' i Java
Følgende er måderne at bruge 'dette' søgeord i Java nævnt nedenfor:
- Brug af nøgleordet 'dette' til at henvise til aktuelle klasseforekomstvariabler.
- Brug af this() til at starte den aktuelle klassekonstruktør
- Brug af 'dette' nøgleord til at returnere den aktuelle klasseforekomst
- Brug af 'dette' nøgleord som metodeparameter
- Brug af 'dette' nøgleord til at påberåbe den aktuelle klassemetode
- Brug af 'dette' nøgleord som argument i konstruktørkaldet
1. Brug af 'dette' nøgleord til at henvise til aktuelle klasseforekomstvariabler
Java
hvordan man udskriver 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. Brug af denne() til at kalde den aktuelle 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();> > }> }> |
>
>Produktion
Inside parameterized constructor Inside default constructor>
3. Brug af 'dette' nøgleord til at returnere den aktuelle 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();> > }> }> |
>
diskret matematik negation
>Produktion
bash delt streng med skilletegn
a = 10 b = 20>
4. Brug af 'dette' søgeord som 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();> > }> }> |
>
>Produktion
a = 10 b = 20>
5. Brug af 'dette' nøgleord til at påkalde den aktuelle 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();> > }> }> |
>
>Produktion
java prøvekode
Inside show function Inside display function>
6. Brug af 'dette' nøgleord som argument i konstruktørkaldet
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();> > }> }> |
>
>Produktion
Value of x in Class B : 5>
Fordele ved at bruge 'denne' reference
Der er visse fordele ved at bruge 'denne' reference i Java som nævnt nedenfor:
- Det hjælper med at skelne mellem instansvariabler og lokale variabler med samme navn.
- Det kan bruges til at videregive det aktuelle objekt som et argument til en anden metode.
- Det kan bruges til at returnere det aktuelle objekt fra en metode.
- Det kan bruges til at kalde en konstruktør fra en anden overbelastet konstruktør i samme klasse.
Ulemper ved at bruge 'denne' reference
Selvom 'denne' reference kommer med mange fordele, er der visse ulemper ved også:
- Overforbrug af dette kan gøre koden sværere at læse og forstå.
- Hvis du bruger dette unødigt, kan det tilføje unødvendige overhead til programmet.
- Brug af dette i en statisk sammenhæng resulterer i en kompileringsfejl.
- Samlet set er dette nøgleord et nyttigt værktøj til at arbejde med objekter i Java, men det bør bruges med omtanke og kun når det er nødvendigt.
Denne artikel er bidraget af Mehak Narang og Amit Kumar .