Descobri pesquisando neste exercício, que é necessário criar o override quando for imprimir um objeto. Achei que funcionaria sem o toString por estar já nativamente nos métodos em todos os casos, mas vi que é apenas nas variáveis primitivas, o toString está ímplicito nelas padrão. Para utilizar objetos é necessário adicionar o toString para visualizar o vetor inteiro.
1. Adicionar produtos, imprimir size e recuperar um produto pelo índice
Fiz a alteração na classe produto no método:
@Override
public String toString(){
return getNome() + ", estoque: " + getQuantidade() + ", preço: " + getPreco();
}
Ficou assim o main:
Produto p1 = new Produto("Camisa Santos", 8, 499.99);
Produto b1 = new Produto("Boné Adidas", 5, 129.99);
Produto t1 = new Produto("Air Max TN", 12, 999.99);
Produto c1 = new Produto("Calça Jeans", 9, 69.99);
ArrayList<Produto> produtos = new ArrayList<>();
produtos.add(p1);
produtos.add(b1);
produtos.add(t1);
produtos.add(c1);
System.out.println(produtos.size());
System.out.println(produtos.get(0));
2. Método e lista completa
@Override
public String toString(){
return getNome() + ", estoque: " + getQuantidade() + ", preço: " + getPreco();
}
Imprimir lista:
System.out.println(produtos);
3. Construtor e atribuição de valores
Construtor:
public Produto(String nome, Integer quantidade, Double preco) {
this.nome = nome;
this.quantidade = quantidade;
this.preco = preco;
}
Passagem de valores aos objetos:
Produto p1 = new Produto("Camisa Santos", 8, 499.99);
Produto b1 = new Produto("Boné Adidas", 5, 129.99);
Produto t1 = new Produto("Air Max TN", 12, 999.99);
Produto c1 = new Produto("Calça Jeans", 9, 69.99);
4. ProdutoPerecivel
Nova classe:
package Arrays.ConstruindoObjetos;
public class ProdutoPerecivel extends Produto {
private String dataValidade;
public String getDataValidade() {
return dataValidade;
}
public ProdutoPerecivel(String nome, Integer quantidade, Double preco, String dataValidade) {
super(nome, quantidade, preco);
this.dataValidade = dataValidade;
}
@Override
public String toString(){
return getNome() + ", estoque: " + getQuantidade() + ", preço: " + getPreco() + ", data de validade: " + getDataValidade();
}
}
No main:
ProdutoPerecivel vence = new ProdutoPerecivel("Leite", 20, 4.49, "27/04/2025");
produtos.add(vence);
System.out.println("Tamanho do vetor:" + produtos.size());
System.out.println(produtos);
System.out.println(produtos.get(4));
Com todos os produtos o console exibiu:
Tamanho do vetor:5
[Camisa Santos, estoque: 8, preço: 499.99, Boné Adidas, estoque: 5, preço: 129.99, Air Max TN, estoque: 12, preço: 999.99, Calça Jeans, estoque: 9, preço: 69.99, Leite, estoque: 20, preço: 4.49, data de validade: 27/04/2025]
Leite, estoque: 20, preço: 4.49, data de validade: 27/04/2025