Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Palabra clave this en Java: Usos prácticos, constructores y más

Palabra clave this en Java explicada

Este artículo profundiza en la palabra clave this en Java, cubriendo su propósito, escenarios comunes y mejores prácticas con ejemplos claros y reales.

¿Qué es this?

En Java, la palabra clave this se refiere a la instancia actual de una clase. Se usa comúnmente dentro de métodos de instancia o constructores para diferenciar entre variables de instancia y parámetros que comparten el mismo nombre.

class Main { int varInst; Main(int varInst){ this.varInst = varInst; System.out.println("referencia this = " + this); } public static void main(String[] args) { Main obj = new Main(8); System.out.println("referencia objeto = " + obj); } }

Salida:

referencia this = Main@23fc625e referencia objeto = Main@23fc625e

Tanto this como la variable obj apuntan a la misma instancia de objeto, confirmando que this es simplemente una referencia al objeto actual.


Cuándo usar this

La palabra clave es invaluable en varios patrones de codificación comunes:

Resolver ambigüedad de nombres de variables

Java permite que un parámetro comparta nombre con una variable de instancia, pero sin this el compilador no puede saber a cuál te refieres. Por ejemplo:

class MiClase { int edad; MiClase(int edad){ edad = edad; } }

En el constructor anterior, edad = edad asigna el parámetro a sí mismo, dejando la variable de instancia sin cambios. Usar this aclara la asignación:

class Main { int edad; Main(int edad){ this.edad = edad; } public static void main(String[] args) { Main obj = new Main(8); System.out.println("obj.edad = " + obj.edad); } }

Salida:

obj.edad = 8

Si el nombre del parámetro difiere de la variable de instancia, el compilador usa this implícitamente:

class Main { int edad; Main(int i) { edad = i; } }

Esto es equivalente a this.edad = i.

Usando this en getters y setters

Los setters y getters a menudo aceptan un parámetro con el mismo nombre que el campo. this asegura que se apunte a la variable correcta:

class Main { String nombre; // setter void setNombre(String nombre) { this.nombre = nombre; } // getter String getNombre(){ return this.nombre; } public static void main(String[] args) { Main obj = new Main(); obj.setNombre("Toshiba"); System.out.println("obj.nombre: " + obj.getNombre()); } }

Salida:

obj.nombre: Toshiba

Sobrecarga de constructores con this()

Cuando un constructor necesita delegar a otro, this() realiza una invocación explícita de constructor:

class Complejo { private int a, b; private Complejo(int i, int j){ this.a = i; this.b = j; } private Complejo(int i){ this(i, i); // llama al constructor de dos parámetros } private Complejo(){ this(0); // llama al constructor de un parámetro } @Override public String toString(){ return this.a + " + " + this.b + "i"; } public static void main(String[] args) { Complejo c1 = new Complejo(2, 3); Complejo c2 = new Complejo(3); Complejo c3 = new Complejo(); System.out.println(c1); System.out.println(c2); System.out.println(c3); } }

Salida:

2 + 3i 3 + 3i 0 + 0i

Puntos clave:

Nota: La invocación explícita de constructor vía this() debe ser la primera sentencia en el constructor.

Pasando this como argumento

Como this es una referencia al objeto actual, puede pasarse a otros métodos, permitiéndoles modificar el estado del objeto:

class EjemploThis { int x; int y; EjemploThis(int x, int y) { this.x = x; this.y = y; System.out.println("Antes de pasar this al método add():"); System.out.println("x = " + this.x + ", y = " + this.y); add(this); // pasar instancia actual System.out.println("Después de pasar this al método add():"); System.out.println("x = " + this.x + ", y = " + this.y); } void add(EjemploThis o){ o.x += 2; o.y += 2; } } class Main { public static void main(String[] args) { new EjemploThis(1, -2); } }

Salida:

Antes de pasar this al método add(): x = 1, y = -2 Después de pasar this al método add(): x = 3, y = 0

Aquí, el método add recibe la misma instancia de objeto y actualiza sus campos directamente.

Java

  1. Dominando la palabra clave this en C#
  2. Dominar Operadores en Java: Tipos, Sintaxis y Ejemplos Prácticos
  3. Comentarios en Java: Tipos, Uso y Mejores Prácticas
  4. Dominar el Bucle for Mejorado en Java: Sintaxis, Ejemplos y Mejores Prácticas
  5. Dominar Constructores en Java: Tipos, Uso y Ejemplos Prácticos
  6. Dominar Strings en Java: Creación, Métodos y Mejores Prácticas
  7. Palabra clave this en Java: Usos prácticos, constructores y más
  8. Palabra clave final en Java: Variables, métodos y clases
  9. Dominando interfaces en Java: Conceptos, implementación y mejores prácticas
  10. Dominando la encapsulación en Java: Guía práctica de ocultamiento de datos
  11. Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos