Palabra Clave “this” en Java

Palabra Clave

¿Qué es un this en Java? La keyword ‘this‘ es una variable que hace referencia al objeto actual. A continuación vemos las distintas formas de usar la palabra clave ‘this’ en Java.

1. La Palabra Clave this

Cuando se llama a un método, se pasa automáticamente un argumento implícito que es una referencia al objeto invocado (es decir, el objeto sobre el que se llama el método). Esta referencia se llama this. Para comprender esto, considere primero un programa que crea una clase llamada Potencia que calcula el resultado de un número elevado a una potencia entera:

//Un ejemplo del uso de this

class Potencia {
        double b;
        int e;
        double valor;

        Potencia(double base, int exp){
            b=base;
            e=exp;
            valor=1;

            if (exp==0) return;
            for ( ; exp>0; exp--) valor = valor * base;
        }

         double get_potencia(){
            return valor;
    }
}

class DemoPotencia {
    public static void main(String[] args) {

        Potencia x=new Potencia(4.0,2);
        Potencia y=new Potencia(2.5,1);
        Potencia z=new Potencia(2.7,2);

        System.out.println(x.b+ " elevado a la potencia de "+ x.e+", es igual a: "+x.get_potencia());
        System.out.println(y.b+ " elevado a la potencia de "+ y.e+", es igual a: "+y.get_potencia());
        System.out.println(z.b+ " elevado a la potencia de "+ z.e+", es igual a: "+z.get_potencia());
    }
}

Salida:

4.0 elevado a la potencia de 2, es igual a: 16.0
2.5 elevado a la potencia de 1, es igual a: 2.5
2.7 elevado a la potencia de 2, es igual a: 7.290000000000001

1.1. Uso de this en Java

Como sabe, dentro de un método, se puede acceder directamente a los otros miembros de una clase, sin ningún objeto o calificación de clase. Por lo tanto, dentro de get_potencia(), la declaración return valor; significa que se devolverá la copia del valor asociado con el objeto invocado. Sin embargo, la misma declaración también se puede escribir así:

return this.valor;

Aquí, this se refiere al objeto sobre el que se llamó get_potencia(). Por lo tanto, this.valor se refiere a la copia del valor de ese objeto. Por ejemplo, si get_potencia() se hubiera invocado en x, this en la declaración anterior se habría estado refiriendo a x. Escribir la declaración sin usar this es solo una abreviatura.

A continuación se muestra toda la clase Potencia escrita usando la referencia this:

class Potencia {
        double b;
        int e;
        double valor;

        Potencia(double base, int exp){
            this.b=base;
            this.e=exp;
            this.valor=1;

            if (exp==0) return;
            for ( ; exp>0; exp--) this.valor = this.valor * base;
        }

         double get_potencia(){
            return this.valor;
    }
}

En realidad, ningún programador de Java escribiría una clase Potencia como se acaba de mostrar porque no se gana nada, y la forma estándar es más fácil. Sin embargo, esto tiene algunos usos importantes. Por ejemplo, la sintaxis de Java permite que el nombre de un parámetro o una variable local sea el mismo que el nombre de una variable de instancia.

Cuando esto sucede, el nombre local oculta la variable de instancia. Puede obtener acceso a la variable de instancia oculta haciendo referencia a ella a través de this. Por ejemplo, la siguiente es una forma sintácticamente válida para escribir el constructor de Potencia().

Potencia(double b, int e){
            this.b=b;
            this.e=e;
            valor=1;

            if (e=0) return;
            for ( ; e>0; e--) valor = valor * b;
        }

En esta versión, los nombres de los parámetros son los mismos que los nombres de las variables de instancia, por lo tanto, los ocultan. Sin embargo, this se usa para “descubrir” las variables de instancia.

2. Usar la palabra clave ‘this’ para referirse a las variables de instancia de la clase actual

Ejemplo:

//Código Java sobre el uso de la palabra clave 'this' para
//referir las variables de instancia de la clase actual
class Test
{
    int a;
    int b;
     
    // Constructor parametrizado
    Test(int a, int b)
    {
        this.a = a;
        this.b = b;
    }
 
    void display()
    {
        //Visualización del valor de las variables a y b
        System.out.println("a = " + a + "  b = " + b);
    }
 
    public static void main(String[] args)
    {
        Test object = new Test(10, 20);
        object.display();
    }
}

Salida:

a = 10 b = 20

3. Usando this() para invocar al constructor de la clase actual

Ejemplo:

// Código Java sobre el uso de this() para
// invocar al constructor de la clase actual
class Test
{
    int a;
    int b;
 
    //Constructor predeterminado
    Test()
    {  
        this(10, 20);
        System.out.println("Dentro del constructor predeterminado \n");
    }
     
    //Constructor parametrizado
    Test(int a, int b)
    {
        this.a = a;
        this.b = b;
        System.out.println("Dentro del constructor parametrizado");
    }
 
    public static void main(String[] args)
    {
        Test object = new Test();
    }
}

Salida:

Dentro del constructor predeterminado
Dentro del constructor parametrizado

4. Usar la palabra clave ‘this’ para devolver la instancia de clase actual

Ejemplo:

//Código Java sobre el uso de laa palabra clave 'this'
//para devolver la instancia de la clase actual
class Test
{
    int a;
    int b;
 
    //Constructor predeterminado
    Test()
    {
        a = 10;
        b = 20;
    }
     
    //Método que devuelve la instancia de la clase actual
    Test get()
    {
        return this;
    }
     
    //Visualización del valor de las variables a y b
    void display()
    {
        System.out.println("a = " + a + "  b = " + b);
    }
 
    public static void main(String[] args)
    {
        Test object = new Test();
        object.get().display();
    }
}

Salida:

a = 10 b = 20

5. Usar la palabra clave ‘this’ como parámetro de método

Ejemplo:

// Código de Java para usar 'this' 
// como parámetro de método
class Test
{
    int a;
    int b;
     
    // Constructor predeterminado
    Test()
    {
        a = 10;
        b = 20;
    }
     
    // Método que recibe 'this' como parámetro
    void display(Test obj)
    {
        System.out.println("a = " + a + "  b = " + b);
    }
  
    // Método que devuelve la instancia de la clase actual
    void get()
    {
        display(this);
    }
 
    public static void main(String[] args)
    {
        Test object = new Test();
        object.get();
    }
}

Salida:

a = 10 b = 20

6. Usar la palabra clave ‘this’ para invocar método de la clase actual

Ejemplo:

// Código Java sobre el uso de 'this' para invocar
// el método de clase actual
class Test {
 
    void display()
    {
        // método que llama a show()
        this.show();
    
       System.out.println("Dentro del método display");
    }
     
    void show() {
        System.out.println("Dentro del método show");
    }
     
 
    public static void main(String args[]) {
        Test t1 = new Test();
        t1.display();
    }
}

Salida:

Dentro del método show
Dentro del método display

7. Usar la palabra clave ‘this’ como argumento en la llamada de constructor

Ejemplo:

// Código Java para usar 'this' como un argumento
// en la llamada de constructor class A
// con el objeto de class B como su miembro de datos
class A
{
    B obj;
     
    // Constructor parametrizado con el objeto de B
    // como un parámetro
    A(B obj)
    {
        this.obj = obj;
        
     // llamando al método display de class B
        obj.display();
    }
     
}
 
class B
{
    int x = 5;
     
    //Constructor predeterminado que crea un objeto de A
    //pasando 'this' como un argumento en el constructor
    B()
    {
        A obj = new A(this);
    }
     
    // método para mostrar el valor de x
    void display()
    {
        System.out.println("Valor de x en Class B: " + x);
    }
     
    public static void main(String[] args) {
        B obj = new B();
    }
}

Salida:

Valor de x en Class B: 5
Keyword en Java
  • this con Ejemplos
Sending
User Review
5 (3 votes)

Sobre el Autor:

Hey hola! Yo soy Alex Walton y tengo el placer de compartir conocimientos hacía ti sobre el tema de Programación en Java, desde cero, Online y Gratis.

0 comentarios

  1. […] Ver algunos usos de la palabra clave ‘this’ […]

Deja una Respuesta

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.