jueves, 22 de enero de 2015

This en Java

Con la palabra clave this hacemos referencia al objeto actual, lo que nos permite solucionar problemas cuando hay sobrecarga de nombres, es decir cuando un mismo nombre es usado por entidades diferentes.

This se usa a menudo para solucionar los conflictos de nombres, también se podrían solucionar cambiando el nombre de las variables por otros pero a veces tenemos un nombre que define perfectamente a la variable o al método por lo que no queremos cambiarlo, es por esto que se usa la palabra clave this en la asignación y eliminar así los conflictos.

Un ejemplo en el que podemos ver cómo se usa podría ser el siguiente:

Tenemos una clase de nombre Superacion en la que en los campos hemos declarado 3 variables por ejemplo:

int km;
int peso;
int velocidad;

Y en el constructor de la clase tenemos los siguiente parámetros:

public Superacion( int km, int peso, int velocidad)

Al tener los parámetros el mismo nombre que los campos podemos tener problemas a la hora de usar una variable u otra ya que cuando se está ejecutando el constructor tendriamos 6 variables, 3 de los campos y 3 de los parámetros, que es lo que se entiende cómo sobrecarga de nombres.  Esto no es un problema en java, puede haber variables y parámetros con el mismo nombre, pero al usarlas si podríamos tener problemas, Java especifica que siempre se usará la declaración mas cercana encerrada en un bloque. Dado que el parámetro está declarado en el constructor y el campo está declarado en la clase, la variable que se usará será la del parámetro pues su declaración está más cerca de la sentencia que lo usa, por tanto si queremos acceder al campo necesitamos de un mecanismo que nos permita hacerlo, ese mecanismo es la palabra clave this que nos permite hacer referencia al objeto actual y a sus campos.

Por ejemplo si quisieramos asignar el valor de los parámetros a los campos de la clase el constructor quedaría de la siguiente manera:

public Superacion( int km, int peso, int velocidad)
{
       this.km=km;
       this.peso=peso;
       this.velocidad=velocidad;
}

De esta forma estariamos asignandole a los campos los valores de los parámetros.

Muchas veces es mejor cambiar el nombre de los parámetros o los campos y ya está, pero si eso no es posible o preferimos no hacerlo sabemos que con la palabra clave this podemos hacer uso de los campos cómo hemos visto.

Cualquier duda no dudéis en ponerla en los comentarios.

Saludos a tod@s!!

;)

No hay comentarios:

Publicar un comentario