Olá, tudo bem?
Segue minha solução:
Produto.java
package modelos;
public class Produto {
    protected String nome;
    protected double preco;
    protected int quantidade;
    
    public Produto(String nome, double preco, int quantidade) {
        this.nome = nome;
        this.preco = preco;
        this.quantidade = quantidade;
    }
    @Override
    public String toString() {
        return "(Produto: " + this.nome + " | Preço: " + this.preco + " | Quantidade: " + this.quantidade + ")";
    }
    
}
ProdutoPerecivel.java
package modelos;
import modelos.Produto;
public class ProdutoPerecivel extends Produto{
    private String dataValidade;
    public ProdutoPerecivel(String nome, double preco, int quantidade, String dataValidade) {
        super(nome, preco, quantidade);
        this.dataValidade = dataValidade;
    }
    @Override
    public String toString() {
        return "(Produto: " + this.nome + " | Preço: " + this.preco + " | Quantidade: " + this.quantidade + " | Validade: " + this.dataValidade + ")";
    }
    
}
Principal.java
import modelos.Produto;
import modelos.ProdutoPerecivel;
import java.util.ArrayList;
public class Principal {
    public static void main(String[] args) {
        ArrayList<Produto> listaDeProdutos = new ArrayList<>();
        
        Produto produto1 = new Produto("produto1", 5.00, 2);
        Produto produto2 = new Produto("produto2", 10.00, 5);
        listaDeProdutos.add(produto1);
        listaDeProdutos.add(produto2);
        System.out.println("Tamanho da lista: " + listaDeProdutos.size());
        System.out.println(listaDeProdutos.toString());
        ProdutoPerecivel produtoPerecivel1 = new ProdutoPerecivel("Produto Perecível 1", 10.00, 6, "12/04/2024");
        System.out.println(produtoPerecivel1);
    }    
}