'aquesta' referència a Java
A Java, 'això' és una variable de referència que fa referència a l'objecte actual, o es pot dir que això a Java és una paraula clau que fa referència a la instància de l'objecte actual. Es pot utilitzar per cridar mètodes i camps de classe actuals, per passar una instància de la classe actual com a paràmetre i per diferenciar les variables locals i les d'instància. L'ús d'aquesta referència pot millorar la llegibilitat del codi i reduir els conflictes de noms.
Java aquesta referència Exemple
A Java, aquesta és una variable de referència que fa referència a l'objecte actual sobre el qual s'està invocant el mètode o el constructor. Es pot utilitzar per accedir a variables d'instància i mètodes de l'objecte actual.
A continuació es mostra la implementació d'aquesta referència:
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());> > }> }> |
Sortida
Name: ABC Age: 18 Name: XYZ Age: 22 Name has been changed to: PQR
Explicació
Al codi anterior, hem definit una classe Persona amb dos camps privats nom i edat. Hem definit el constructor de classes Person per inicialitzar aquests camps amb aquesta paraula clau. També hem definit mètodes d'obtenció i configuració per a aquests camps que utilitzen aquesta paraula clau per fer referència a la instància de l'objecte actual.
En el mètode printDetails(), hem utilitzat aquesta paraula clau per fer referència a la instància de l'objecte actual i imprimir-ne el nom, l'edat i la referència de l'objecte.
A la classe Main, hem creat dos objectes Person i hem cridat el mètode printDetails() a cada objecte. La sortida mostra el nom, l'edat i la referència d'objecte de cada instància d'objecte.
Mètodes per utilitzar 'això' a Java
A continuació es mostren les maneres d'utilitzar la paraula clau 'això' a Java que s'esmenten a continuació:
- Utilitzeu la paraula clau 'això' per referir-vos a les variables d'instància de classe actuals.
- Utilitzant this() per invocar el constructor de classe actual
- Utilitzant la paraula clau 'aquesta' per tornar la instància de classe actual
- Utilitzant la paraula clau 'aquesta' com a paràmetre del mètode
- Utilitzant la paraula clau 'aquesta' per invocar el mètode de classe actual
- Utilitzant la paraula clau 'aquesta' com a argument a la crida del constructor
1. Utilitzeu la paraula clau 'aquesta' per referir-vos a les variables d'instància de classe actuals
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();> > }> }> |
Sortida
a = 10 b = 20
2. Utilitzant this() per invocar el constructor de classe actual
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();> > }> }> |
Sortida
Inside parameterized constructor Inside default constructor
3. Utilitzant la paraula clau 'this' per tornar la instància de classe actual
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();> > }> }> |
Sortida
a = 10 b = 20
4. Utilitzant la paraula clau 'aquesta' com a paràmetre del mètode
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();> > }> }> |
Sortida
a = 10 b = 20
5. Utilitzant la paraula clau 'this' per invocar el mètode de classe actual
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();> > }> }> |
Sortida
Inside show function Inside display function
6. Utilitzant la paraula clau ‘this’ com a argument a la crida del constructor
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();> > }> }> |
Sortida
Value of x in Class B : 5
Avantatges d'utilitzar 'aquesta' referència
Hi ha certs avantatges d'utilitzar 'aquesta' referència a Java, tal com s'esmenta a continuació:
- Ajuda a distingir entre variables d'instància i variables locals amb el mateix nom.
- Es pot utilitzar per passar l'objecte actual com a argument a un altre mètode.
- Es pot utilitzar per retornar l'objecte actual des d'un mètode.
- Es pot utilitzar per invocar un constructor des d'un altre constructor sobrecarregat de la mateixa classe.
Desavantatges d'utilitzar 'aquesta' referència
Tot i que 'aquesta' referència té molts avantatges, també hi ha certs desavantatges:
- L'ús excessiu d'això pot dificultar la lectura i la comprensió del codi.
- Utilitzar-ho innecessàriament pot afegir despeses generals innecessàries al programa.
- Si s'utilitza en un context estàtic, es produeix un error en temps de compilació.
- En general, aquesta paraula clau és una eina útil per treballar amb objectes a Java, però s'ha d'utilitzar amb criteri i només quan sigui necessari.
Aquest article és contribuït per Mehak Narang i Amit Kumar .