Buenas aquí otro ejercicio, el CU00686B del tutorial básico de programación en lenguaje Java.
public class Productos {
    
    private double fCaducidad;
    
    private int nºLote;
    
    public Productos (double fCaducidad, int nºLote) {
        
        this.fCaducidad = fCaducidad;
        
        this.nºLote = nºLote;
        
    }
    
    public void fCaducidad (double fCaducidad) {
        
        this.fCaducidad = fCaducidad;
    
    }
    
    public void nºLote (int nºLote) {
        
        this.nºLote = nºLote;
    
    }
    
    public double getCaducidad () {return fCaducidad;}
    
    public int getNºLote () { return nºLote;}
    
}
public class Pfrescos extends Productos {
    
    private double fenvasado;
    
    private String porigen;
    
    public Pfrescos (double fCaducidad, int nºLote) {
        
        super (fCaducidad, nºLote);
        
        fenvasado = 0.0;
        
        porigen = "";
    
    }
    
    public void setfenvasado (double fenvasado) {
        
        this.fenvasado = fenvasado;
    
    }
    
    public void setporigen (String porigen) {
        
        this.porigen = porigen;
    
    }
    
    public double getfenvasado() {return fenvasado;}
    
    public String getporigen() {return porigen;}
    
    public void mostrarPf() {
        
        System.out.println ("el producto fresco fué envasado en fecha de " + getCaducidad() + "\n"+ " el número de lote es " + getNºLote() + "\n" + " la fecha de envasado es " + getfenvasado() + "\n" + "el país de origen del producto es " + getporigen());
    
    }
}
public class Prefrigerados extends Productos {
    
    String cOrganismo;
    
    public Prefrigerados (double fCaducidad, int nºLote) {
        
        super (fCaducidad, nºLote);
        
        cOrganismo = "";
    }
    
    public void setCOrganismo ( String cOrganismo) {
        
        this.cOrganismo = cOrganismo;
    
    }
    public String getCOrganismo () {return cOrganismo;}
    
    public void mostrarPr() {
        
         System.out.println ("el producto refrigerado fué envasado en fecha de " + getCaducidad() + "\n"+ " el número de lote es " + getNºLote() + "\n" + " el código del organismo de supervision alimentaria es " + getCOrganismo ()) ;
    
    }
}
public class Pcongelados extends Productos {
    
    private double tªCongelacion;
    
    public Pcongelados (double fCaducidad, int nºLote) {
        
        super (fCaducidad, nºLote);
        
        tªCongelacion = 0.0;
    
    }
    
    public void setTªCongelacion (double tªCongelacion) {
        
        this.tªCongelacion = tªCongelacion;
    
    }
    
    public double getTªCongelacion() {return tªCongelacion;}
    
    public void mostrarpCongelados() {
        
        System.out.println ("el producto congelado fué envasado en fecha de " + getCaducidad() + "\n"+ " el número de lote es " + getNºLote() + "\n" + " la temperatura de congelación del producto " + getTªCongelacion()) ;
    
    }
}
public class TestHerencia {
    
    public static void main (String [] args) {
        
        Pfrescos producto1 = new Pfrescos (10.12 , 12);
        
        producto1.setfenvasado(10.10);
        
        producto1.setporigen("España");
        
        producto1.mostrarPf();
        
        Prefrigerados producto2 = new Prefrigerados (10.12 , 12);
        
        producto2.setCOrganismo("CO1");
        
        producto2.mostrarPr();
        
        Pcongelados producto3 = new Pcongelados (10.12 ,12);
        
        producto3.setTªCongelacion(-1.5);
        
        producto3.mostrarpCongelados();
    }
}
Gracias por vuestro comentario
un saludo