1
resposta

[Dúvida] Meu toString() funcionou sem o uso do this antes dos nomes das variáveis

Provavelmente é uma dúvida simples, mas por que meu código funcionou sem o uso do this antes das variáveis? O professou usou o this.nome e this.numeroMatricula. Segue o código abaixo:

package br.com.alura;

public class Aluno {
    private String nome;
    private int numeroMatricula;

    public Aluno(String nome, int numeroMatricula) {
        this.nome = nome;
        this.numeroMatricula = numeroMatricula;
    }

    public String getNome() {
        return nome;
    }

    public int getNumeroMatricula() {
        return numeroMatricula;
    }

    @Override
    public String toString() {
        return "Aluno: " + nome + " - Matrícula: " + numeroMatricula;
    }
}
package br.com.alura;

public class TestaCursoComAluno {
    public static void main(String[] args) {
        Curso javaColecoes = new Curso("Dominando Java", "Paulo Silveira");

        javaColecoes.adiciona(new Aula("Trabalhando com ArrayList", 21));
        javaColecoes.adiciona(new Aula("Criando uma Aula", 21));
        javaColecoes.adiciona(new Aula("Modelando com coleções", 22));

        Aluno a1 = new Aluno("Caetano Veloso", 5678);
        Aluno a2 = new Aluno("Marcelo Rossi", 1890);
        Aluno a3 = new Aluno("Guilherme Boulos", 8143);

        javaColecoes.matricula(a1);
        javaColecoes.matricula(a2);
        javaColecoes.matricula(a3);

        System.out.println("Todos os alunos matriculados nesse curso: ");
        javaColecoes.getAlunos().forEach( aluno -> {
            System.out.println(aluno);
        });
    }
1 resposta

Olá, Artur!

Sua pergunta é muito interessante. No código que você compartilhou, você está criando a classe Aluno com dois atributos privados: nome e numeroMatricula. Ao utilizar o construtor da classe Aluno, você está atribuindo os valores passados como parâmetros aos atributos da classe.

Quando você implementa o método toString(), você está retornando uma representação em forma de string do objeto Aluno. Nesse caso, você está concatenando o valor dos atributos nome e numeroMatricula diretamente na string retornada.

A utilização do this antes dos nomes das variáveis é opcional nesse caso. O uso do this é uma forma de deixar claro que você está se referindo aos atributos da classe e não a variáveis locais. No seu código, como não há ambiguidade entre os nomes das variáveis locais e os atributos da classe, o uso do this não é necessário.

Por exemplo, se você tivesse uma variável local chamada nome dentro do método toString(), seria necessário utilizar o this para diferenciar a variável local do atributo da classe.

Espero ter ajudado e bons estudos!