1
resposta

Não entendi como reescrever o toString modifica a chamada do estado da classe

Pessoal,

Ainda não entendi como reescrever o método toString da Classe, impacta no objeto. Por exemplo, se eu chamar o comando abaixo sem reescreve-lo:

System.out.println(curso01.getAulas())-> Saída:

br.com.alura.Aula@6f496d9f
br.com.alura.Aula@723279cf
br.com.alura.Aula@10f87f48

Se eu reescrever o toString conforme o Paulo Vieira citou, sai direitinho:

System.out.println(curso01.getAulas())-> Saída:

[Aula: Aula01, 21 minutos]
[Aula: Aula02, 15 minutos]
[Aula: Aula03, 36 minutos]

Porque há essa modificação se eu não estou fazendo um System.out.println(curso01.toString) ???

1 resposta

Olá Leonardo! Tudo certo?

Quando você chama o método System.out.println(curso01.getAulas()), a saída que você vê é gerada pela chamada implícita do método toString() da classe Aula. Ou seja, é como se por baixo dos panos o toString já estivesse sendo chamado.

Por padrão, o método toString() da classe Object (classe mãe de todas as classes em Java) é chamado, e ele retorna uma representação em string do objeto na forma NomeDaClasse@EnderecoDeMemoria. Quando você reescreve o método toString() na classe Aula, você está sobrescrevendo a implementação padrão do método toString() da classe Object, que agora retorna uma representação em string personalizada da classe Aula.

Então, quando você chama System.out.println(curso01.getAulas()), o método toString() personalizado da classe Aula é chamado para cada objeto Aula na lista, e a saída que você vê é a representação em string personalizada de cada objeto Aula.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!