En Java, 'esto' es una variable de referencia que hace referencia al objeto actual, o se puede decir que esto en Java es una palabra clave que hace referencia a la instancia del objeto actual. Se puede utilizar para llamar a métodos y campos de la clase actual, pasar una instancia de la clase actual como parámetro y diferenciar entre las variables locales y de instancia. El uso de esta referencia puede mejorar la legibilidad del código y reducir los conflictos de nombres.
Java este ejemplo de referencia
En Java, esta es una variable de referencia que hace referencia al objeto actual en el que se invoca el método o constructor. Se puede utilizar para acceder a variables de instancia y métodos del objeto actual.
A continuación se muestra la implementación de esta referencia:
Java
analizar cadena a int
// 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());> >}> }> |
>
>Producción
Name: ABC Age: 18 Name: XYZ Age: 22 Name has been changed to: PQR>
Explicación
En el código anterior, hemos definido una clase Persona con dos campos privados, nombre y edad. Hemos definido el constructor de la clase Persona para inicializar estos campos usando esta palabra clave. También hemos definido métodos getter y setter para estos campos que usan esta palabra clave para referirse a la instancia del objeto actual.
En el método printDetails(), hemos utilizado esta palabra clave para hacer referencia a la instancia del objeto actual e imprimir su nombre, edad y referencia del objeto.
En la clase Main, creamos dos objetos Person y llamamos al método printDetails() en cada objeto. El resultado muestra el nombre, la edad y la referencia de objeto de cada instancia de objeto.
Métodos para usar 'esto' en Java
Las siguientes son las formas de utilizar la palabra clave 'this' en Java que se mencionan a continuación:
- Usar la palabra clave 'this' para hacer referencia a las variables de instancia de la clase actual.
- Usando this() para invocar el constructor de clase actual
- Usar la palabra clave 'esta' para devolver la instancia de clase actual
- Usar la palabra clave 'esta' como parámetro del método
- Usar la palabra clave 'esta' para invocar el método de clase actual
- Usar la palabra clave 'esta' como argumento en la llamada al constructor
1. Usar la palabra clave 'esta' para hacer referencia a las variables de instancia de la clase actual
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();> >}> }> |
>
>
java reemplaza el carácter en la cadenaProducción
a = 10 b = 20>
2. Usar this() para invocar el constructor de clase 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();> >}> }> |
>
>Producción
Inside parameterized constructor Inside default constructor>
3. Usar la palabra clave 'esta' para devolver la instancia de clase actual
Java
árboles extendidos
// 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();> >}> }> |
>
>Producción
a = 10 b = 20>
4. Usar la palabra clave 'esta' como parámetro del método
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();> >}> }> |
>
>Producción
a = 10 b = 20>
5. Usar la palabra clave 'esta' para invocar el método de clase actual
Java
panda derretido
// 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();> >}> }> |
>
>Producción
Inside show function Inside display function>
6. Usar la palabra clave 'esta' como argumento en la llamada al constructor
Java
menú desplegable de javascript
// 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();> >}> }> |
>
>Producción
Value of x in Class B : 5>
Ventajas de utilizar 'esta' referencia
Existen ciertas ventajas de utilizar 'esta' referencia en Java, como se menciona a continuación:
- Ayuda a distinguir entre variables de instancia y variables locales con el mismo nombre.
- Se puede utilizar para pasar el objeto actual como argumento a otro método.
- Se puede utilizar para devolver el objeto actual de un método.
- Se puede utilizar para invocar un constructor desde otro constructor sobrecargado en la misma clase.
Desventajas de utilizar 'esta' referencia
Aunque 'esta' referencia tiene muchas ventajas, también tiene ciertas desventajas:
- El uso excesivo de esto puede hacer que el código sea más difícil de leer y comprender.
- Usar esto innecesariamente puede agregar una sobrecarga innecesaria al programa.
- Usar esto en un contexto estático da como resultado un error en tiempo de compilación.
- En general, esta palabra clave es una herramienta útil para trabajar con objetos en Java, pero debe usarse con prudencia y sólo cuando sea necesario.
Este artículo es una contribución de Mehak Narang y amit kumar .