Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Duda] Confusión entre atributo y parámetro en Java: ¿cuándo usar 'this'?

En el siguiente ejemplo que se da:

public class Lampara{ private boolean encendida; private String modelo;

public void enciendeLaLampara(boolean encendida) {
   this.encendida= encendida;
}

}

Se menciona: "Entonces, podemos concluir que "this" se refiere al objeto actual y no al parámetro del método. Es común usar "this" para eliminar la confusión entre los atributos y los parámetros, y este concepto no es exclusivo de Java, ya que otros lenguajes de programación orientados a objetos también tienen esta característica."

Mi pregunta es: cuando se hace referencia a "al objeto actual y no al parámetro del método" se hace referencia entonces al valor del atributo?. Porque por lo que entiendo, al usar this.encendida → se hace referencia a valor del atributo y lo que va después de la asignación (=) se hace referencia ahora si al valor del parámetro, ¿no es así?

En otras palabras, se va a asignar al atributo de la instancia actual (this.encendida) el valor del parámetro encendida que se pasó al método, ¿no?

1 respuesta

Hola Ivan,

El this se utiliza en varios casos , el mas común es evitar confundir un argumento con un atributo en caso de que los dos tengan el mismo nombre.

Supongamos que tengo la clase persona y esta tiene un atributo nombre , también tengo un método persona que tiene un parámetro nombre. Se debe tener el cuenta que nombre con plomo y nombre con marrón son cosas diferentes. Luego si yo quiero asignar el nombre que pase por parámetro al atributo y pongo nombre = nombre , esto no va a funcionar como quisiéramos puesto que solo va a modificar el parámetro. Para que esto no suceda tenemos 2 opciones

1.- Cambio el atributo por otra cosa. Ejemplo: nombreAtributo. En ese caso tendria "nombreAtributo = nombre" y todo ok. 2.- Agregar this "this.nombre=nombre" donde la parte izquierda hacer referencia al atributo y la parte derecha al argumento.

public class Persona {
    private String nombre;

    public Persona(String nombre) {
        nombre = nombre;  // Esto no funciona como esperamos
    }
}

Si te ayude no olvides dar a solucionado.