Esta podría ser una solución al ejercicio propuesto CU00686B.
public class Producto
{
    private String lote;
    private String fechaCaducidad;
    public Producto(){
        lote="";
        fechaCaducidad="";
    }
    public Producto(String lote,String fechaCaducidad){
        this.lote=lote;
        this.fechaCaducidad=fechaCaducidad;
    }
    public void setLote(String lote){
        this.lote=lote;
    }
    public void setFechaCaducidad(String fechaCaducidad){
        this.fechaCaducidad=fechaCaducidad;
    }
    public String getLote(){
        return lote;
    }
    public String getFechaCaducidad(){
        return fechaCaducidad;
    }
    public void mostrarProducto(){
        System.out.println("Lote : "+lote);
        System.out.println("Fecha de caducidad : "+fechaCaducidad);
    }
    
    public void mostrarInformacion(){
        //Sobreescrito en cada una de las subclases
    }
    
}
public class ProductoFresco extends Producto
{
    private String fechaEnvasado;
    private String paisOrigen;
    public ProductoFresco(){
        super();
        fechaEnvasado="";
        paisOrigen="";
    }
    public ProductoFresco(String numeroLote, String fechaCaducidad, String fechaEnvasado, String paisOrigen){
        super(numeroLote,fechaCaducidad);
        this.fechaEnvasado=fechaEnvasado;
        this.paisOrigen=paisOrigen;
    }
    public void setFechaEnvasado(String fechaEnvasado){
        this.fechaEnvasado=fechaEnvasado;
    }
    public void setPaisOrigen(String paisOrigen){
        this.paisOrigen=paisOrigen;
    }
    public String getFechaEnvasdo(){
        return fechaEnvasado;
    }
    public String getPaisOrigen(){
        return paisOrigen;
    }
    public void mostrarInformacion(){
         System.out.println("--- Producto Fresco ---");
        mostrarProducto();
        System.out.println("Fecha de envasado : "+fechaEnvasado);
        System.out.println("Pais de origen :"+paisOrigen);
    }
}
public class ProductoRefrigerado extends Producto
{
    private String codigoOrgSupAlim;
    public ProductoRefrigerado(){
        super();
        codigoOrgSupAlim="";
    }
    public ProductoRefrigerado(String lote, String fechaCaducidad, String codigoOrgSupAlim){
        super(lote,fechaCaducidad);
        this.codigoOrgSupAlim=codigoOrgSupAlim;
    }
    public void setCodigoOrgSupAlim(String codigoOrgSupAlim){
        this.codigoOrgSupAlim=codigoOrgSupAlim;
    }
    public String getCodigoOrgSupAlim(){
        return codigoOrgSupAlim;
    }
    public void mostrarInformacion(){
        System.out.println("--- Producto Refrigerado ---");
        mostrarProducto();
        System.out.println("Codigo del Organismo de Supervisión Alimentaria : "+codigoOrgSupAlim);
    }
}
public class ProductoCongelado extends Producto
{
    private double temperaturaCongelacion;
    public ProductoCongelado()
    {
        super();
        temperaturaCongelacion=0;
    }
    public ProductoCongelado(String lote,String fechaCaducidad,double temperaturaCongelacion){
        super(lote,fechaCaducidad);
        this.temperaturaCongelacion=temperaturaCongelacion;
    }
    public void setTemperaturaCongelacion(double temperaturaCongelacion){
        this.temperaturaCongelacion =temperaturaCongelacion;
    }
    public double getTemperaturaCongelacion(){
        return temperaturaCongelacion;
    }
    public void mostrarInformacion(){
        System.out.println("--- Producto Congelado ---");
        mostrarProducto();
        System.out.println("Temperatura de congelación : "+temperaturaCongelacion+"ºC");
    }
}
import java.util.ArrayList;
import java.util.Iterator;
public class TestHerencia2
{
    public static void main(String Arg[]){
        ArrayList<Producto> listaProductos= new ArrayList<Producto>();
        listaProductos.add(new ProductoFresco("01","01/01/2021","01/01/2001","Argentina"));
        listaProductos.add(new ProductoRefrigerado("02","02/02/2022","COD-002"));
        listaProductos.add(new ProductoCongelado("03","03/03/2023",-3.50));
        System.out.println("Lista de Productos\n");
        Iterator<Producto> otroProducto=listaProductos.iterator();
        while(otroProducto.hasNext()){
            otroProducto.next().mostrarInformacion();
        }
        System.out.println("\nFin lista");
    }
}
Un saludo