1
resposta

Data de validade

Abaixo, a última resolução do professor não imprime a data de validade??

public class ProdutoPerecivel extends Produto {
    String dataValidade;

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

    public static void main(String[] args) {
        ProdutoPerecivel produtoPerecivel = new ProdutoPerecivel("Produto C", 12.75, 2, "2023-12-31");
        System.out.println(produtoPerecivel);
    }
}
1 resposta

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 ✓.