La palabra clave this
Parte de la sección Programación Orientada a Objetos del Journey de Java de Coddy — lección 4 de 87.
La palabra clave this se refiere a la instancia actual de una clase. Distingue entre campos y parámetros con el mismo nombre.
Sin this, el parámetro oculta al campo
public class Person {
private String name;
public Person(String name) {
name = name; // ¡Asigna el parámetro a sí mismo!
}
}Uso de this para asignar valores correctamente
public class Person {
private String name;
public Person(String name) {
this.name = name; // Asigna el parámetro al campo
}
public String getName() {
return this.name;
}
}Uso de this en métodos
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getDescription() {
return this.name + " is " + this.age + " years old";
}
}La palabra clave this siempre apunta al objeto actual. Es esencial cuando los nombres de los parámetros coinciden con los nombres de los campos, lo que evita confusiones y errores.
Desafío
IntermedioCompleta la clase Person utilizando la palabra clave this para distinguir entre campos y parámetros:
- Un constructor que utiliza
thispara asignar parámetros a los campos - Métodos getter que utilizan
thispara acceder a los campos - Un método
getDescription()que devuelve"<name>, age <age>, from <city>"
Hoja de referencia
La palabra clave this se refiere a la instancia actual de una clase y distingue entre campos y parámetros con el mismo nombre.
Sin this, el parámetro oculta al campo:
public Person(String name) {
name = name; // ¡Asigna el parámetro a sí mismo!
}Uso de this para asignar valores correctamente:
public Person(String name) {
this.name = name; // Asigna el parámetro al campo
}Uso de this en métodos getter:
public String getName() {
return this.name;
}Uso de this con múltiples campos:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getDescription() {
return this.name + " is " + this.age + " years old";
}
}Pruébalo tú mismo
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int age = Integer.parseInt(scanner.nextLine());
String city = scanner.nextLine();
Person person = new Person(name, age, city);
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
System.out.println("City: " + person.getCity());
System.out.println(person.getDescription());
}
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Programación Orientada a Objetos
1Fundamentos de OOP
Archivos externosIntroducción a la OOPClases vs. ObjetosLa palabra clave thisMétodosCampos (Atributos)Método constructorSobrecarga de constructoresResumen - Calculadora simple4Herencia
Herencia básica (extends)La palabra clave superSobrescritura de métodos (@Override)Encadenamiento de constructoresLa clase ObjectHerencia simple y multinivelPor qué no hay herencia múltiple de clasesResumen - Jerarquía de empleados7Métodos especiales y la clase Object
Método toString()equals() y hashCode()Método clone()compareTo() y ComparableInterfaz ComparatorResumen - Ordenamiento personalizado2Modificadores de acceso y encapsulamiento
Visión general de los niveles de accesoMétodos Getter y SetterOcultamiento de informaciónLa palabra clave finalResumen - Gestor de cuentas bancarias5Polimorfismo
Fundamentos de sobrecarga de métodosSobrescritura de métodos (tiempo de ejecución)Upcasting y DowncastingEl operador instanceofClases y métodos abstractosResumen - Calculadora de figuras8Conceptos avanzados de POO
Composición vs. HerenciaAgregación vs. ComposiciónClases internas, anidadas y anónimasEnums y métodos de EnumRecords (Java 16+)Clases selladas (Java 17+)11Patrones de diseño - Parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón BuilderPatrón ObserverPatrón Strategy3Propiedades de clase y miembros estáticos
Variables de instancia vs. estáticasMétodos estáticosBloques estáticosConstantes (static final)Repaso - Contador y utilidad6Interfaces y Clases Abstractas
Introducción a las InterfacesImplementación de InterfacesImplementación de Múltiples InterfacesMétodos Default y Static en InterfacesClases Abstractas vs InterfacesInterfaces FuncionalesResumen - Sistema de Pagos9Genéricos
Introducción a los genéricosClases genéricasMétodos genéricosParámetros de tipo delimitadosComodines (?, extends, super)Resumen - Contenedor genérico12Patrones de diseño Parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón CompositePatrón Iterator