Bom dia Helber! Tudo joia?
Quando você tenta imprimir um objeto diretamente com System.out.println(produtoPerecivel);
, o Java usa o método toString()
para obter uma representação em texto do objeto. Se esse método não estiver sobrescrito na sua classe, ele usará a implementação padrão da classe Object
, que não imprime os atributos do objeto.
Para resolver isso, você pode sobrescrever o método toString()
na classe ProdutoPerecivel
para incluir a dataValidade
. Veja como você pode fazer isso:
public class ProdutoPerecivel extends Produto {
String dataValidade;
public ProdutoPerecivel(String nome, double preco, int quantidade, String dataValidade) {
super(nome, preco, quantidade);
this.dataValidade = dataValidade;
}
@Override
public String toString() {
return super.toString() + ", Data de Validade: " + dataValidade;
}
public static void main(String[] args) {
ProdutoPerecivel produtoPerecivel = new ProdutoPerecivel("Produto C", 12.75, 2, "2023-12-31");
System.out.println(produtoPerecivel);
}
}
Certifique-se também de que a classe Produto
tenha seu próprio método toString()
implementado para que os atributos herdados sejam impressos corretamente. Por exemplo:
public class Produto {
String nome;
double preco;
int quantidade;
public Produto(String nome, double preco, int quantidade) {
this.nome = nome;
this.preco = preco;
this.quantidade = quantidade;
}
@Override
public String toString() {
return "Nome: " + nome + ", Preço: " + preco + ", Quantidade: " + quantidade;
}
}
Com essas alterações, ao imprimir um objeto ProdutoPerecivel
, você verá todos os atributos, incluindo a data de validade.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.