La palabra reservada this
consiste en una referencia al objeto actual. El uso de este operador puede resultar muy útil a la hora de evitar la ambigüedad que puede producirse entre el nombre de un parámetro de un método y el nombre de un atributo cuando ambos tienen el mismo identificador (mismo nombre). En tales casos el parámetro "oculta" al atributo y no tendríamos acceso directo a él (al escribir el identificador estaríamos haciendo referencia al parámetro y no al atributo). En estos casos la referencia this
nos permite acceder a estos atributos ocultados por los parámetros.
Dado que this es una referencia a la propia clase en la que te encuentras en ese momento, puedes acceder a sus atributos mediante el operador punto (.) como sucede con cualquier otra clase u objeto. Por tanto, en lugar de poner el nombre del atributo (que estos casos haría referencia al parámetro), podrías escribir this.nombreAtributo
, de manera que el compilador sabrá que te estás refiriendo al atributo y se eliminará la ambigüedad.
En el ejemplo de la clase Punto
, podríamos utilizar la referencia this
si el nombre del parámetro del método coincidiera con el del atributo que se desea modificar. Por ejemplo
void establecerX (int x)
{
this.x= x;
}
En este caso ha sido indispensable el uso de this
, pues si no sería imposible saber en qué casos te estás refiriendo al parámetro x
y en cuáles al atributo x
. Para el compilador el identificador x
será siempre el parámetro, pues ha "ocultado" al atributo.
En algunos casos puede resultar útil hacer uso de la referencia this
aunque no sea necesario, pues puede ayudar a mejorar la legibilidad del código.