Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Duvida sobre intração do toString e sout

Nos exercícios de Produtos, criando objetos e adicionando-os no ArrayList, eu criei uma classe Produto com (Nome, preço e quantidade), e uma classe ProdutoPerecivel, que recebe tambem os valores da classe Produto de nome, preço e quantidade, e um adicional de data, visto que esse construtor e classe é usado somente para produtos que têm data de validade.

public Produto(String nome, double preco, int quantidade){ this.nome = nome; this.preco = preco; this.quantidade = quantidade; }

public ProdutoPerecivel(String nome, double preco, int quantidade, String dataDeValidade) { super(nome, preco, quantidade ); this.dataDeValidade = dataDeValidade; }

Na hora de imprimir os valores do array, que contem produtos com e sem data de validade, eu adicionei um toString Override em cada classe para determinar o return que vai sair de cada classe. Porém, na principal, eu usei um for pra puxar cada Produto de cada index, junto do System.out.print, que usava o get(i). Nisso, eu percebi que a saida era igual o toString que coloquei de cada classe, ele identificava a classe do objeto do Produto e puxava a saida do toString que eu coloquei, mas em nenhum momento eu usei .toString para fazer essa saida que eu indiquei em cada classe. Por quê isso acontece? Acho que de pra entender a minha duvida hahaha

1 resposta
solução!

Olá, Matheus.

Tudo bem?

Quando você usa o método System.out.print ou System.out.println em um objeto, o Java automaticamente chama o método toString desse objeto. Isso acontece porque o método println está sobrecarregado para aceitar diferentes tipos de argumentos, incluindo objetos. Quando um objeto é passado para println, o Java chama o método toString desse objeto para obter uma representação em string que será impressa.

Por exemplo, considere o seguinte código:

Produto produto = new Produto("Arroz", 10.0, 5);
System.out.println(produto);

Mesmo que você não veja explicitamente a chamada para toString, o método println está chamando produto.toString() internamente. Isso é uma funcionalidade padrão do Java para facilitar a impressão de objetos.

Espero ter ajudado. Qualquer dúvida manda aqui. Bons estudos.