Menu
Coddy logo textTech

A Palavra-chave this

Parte da seção Programação Orientada a Objetos do Journey de Java da Coddy — lição 4 de 87.

A palavra-chave this refere-se à instância atual de uma classe. Ela distingue entre campos e parâmetros com o mesmo nome.

Sem o this, o parâmetro sombreia o campo

public class Person {
    private String name;
    
    public Person(String name) {
        name = name;  // Atribui o parâmetro a si mesmo!
    }
}

Usando this para atribuir valores corretamente

public class Person {
    private String name;
    
    public Person(String name) {
        this.name = name;  // Atribui o parâmetro ao campo
    }
    
    public String getName() {
        return this.name;
    }
}

Usando this em 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";
    }
}

A palavra-chave this sempre aponta para o objeto atual. É essencial quando os nomes dos parâmetros coincidem com os nomes dos campos, evitando confusão e bugs.

challenge icon

Desafio

Médio

Complete a classe Person usando a palavra-chave this para distinguir entre campos e parâmetros:

  • Um construtor que usa this para atribuir parâmetros a campos
  • Métodos getter usando this para acessar campos
  • Um método getDescription() que retorna "<name>, age <age>, from <city>"

Folha de consulta

A palavra-chave this refere-se à instância atual de uma classe e distingue entre campos e parâmetros com o mesmo nome.

Sem o this, o parâmetro sombreia o campo:

public Person(String name) {
    name = name;  // Assigns parameter to itself!
}

Usando this para atribuir valores corretamente:

public Person(String name) {
    this.name = name;  // Assigns parameter to field
}

Usando this em métodos getter:

public String getName() {
    return this.name;
}

Usando this com múltiplos 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";
    }
}

Experimente você mesmo

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());
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos