Solución propuesta para el ejercicio CU00686B del tutorial de programación en lenguaje Java desde cero:
Clase principal main
package testherencia2;
public class TestHerencia2 {
    public static void main(String[] args) {
        ProductoFresco productoFresco = new ProductoFresco("20/09/2016", "000012345");
        productoFresco.setFechaEnvasado("01/11/2015");
        productoFresco.setPaisOrigen("Paraguay");
        productoFresco.mostrarProductoFresco();
        ProductoRefrigerado productoRefrigerado = new ProductoRefrigerado("30/12/2016", "00098878");
        productoRefrigerado.setOrgSupAlimentaria("xz0083");
        productoRefrigerado.mostrarProductoRefrigerado();
        ProductoCongelado productoCongelado = new ProductoCongelado("10/10/2016", "00055443");
        productoCongelado.setTemperaturaRecomendada("-4º");
        productoCongelado.mostrarProductoCongelado();
    }
}
Clase Producto
package testherencia2;
public class Producto {
    private String fechaCaducidad;
    private String numeroLote;
    //public Producto() {
    //}
    public Producto(String fechaCaducidad, String numeroLote) {
        this.fechaCaducidad = fechaCaducidad;
        this.numeroLote = numeroLote;
    }
    public String getFechaCaducidad() {
        return fechaCaducidad;
    }
    public void setFechaCaducidad(String fechaCaducidad) {
        this.fechaCaducidad = fechaCaducidad;
    }
    public String getNumeroLote() {
        return numeroLote;
    }
    public void setNumeroLote(String numeroLote) {
        this.numeroLote = numeroLote;
    }
}
Clase producto fresco
package testherencia2;
public class ProductoFresco extends Producto {
    private String fechaEnvasado;
    private String paisOrigen;
    public ProductoFresco(String fechaCaducidad, String numeroLote) {
        super(fechaCaducidad, numeroLote);
        fechaEnvasado = "Unknown";
        paisOrigen = "Unknown";
    }
    public String getFechaEnvasado() {
        return fechaEnvasado;
    }
    public void setFechaEnvasado(String fechaEnvasado) {
        this.fechaEnvasado = fechaEnvasado;
    }
    public String getPaisOrigen() {
        return paisOrigen;
    }
    public void setPaisOrigen(String paisOrigen) {
        this.paisOrigen = paisOrigen;
    }
    public void mostrarProductoFresco() {
        System.out.println("Producto fresco de fecha de vencimiento " + getFechaCaducidad() + " con numero de lote " + getNumeroLote() + ""
                + " con fecha de envasado " + getFechaEnvasado() + " paìs de origen " + getPaisOrigen());
    }
}
Clase producto refrigerado
package testherencia2;
public class ProductoRefrigerado extends Producto {
    private String orgSupAlimentaria;
    public ProductoRefrigerado(String fechaCaducidad, String numeroLote) {
        super(fechaCaducidad, numeroLote);
        orgSupAlimentaria = "Unknown";
    }
    public String getOrgSupAlimentaria() {
        return orgSupAlimentaria;
    }
    public void setOrgSupAlimentaria(String orgSupAlimentaria) {
        this.orgSupAlimentaria = orgSupAlimentaria;
    }
    public void mostrarProductoRefrigerado() {
        System.out.println("Producto fresco de fecha de vencimiento " + getFechaCaducidad() + " con numero de lote " + getNumeroLote() + ""
                + " código del organismo de supervisión alimentaria " + getOrgSupAlimentaria());
    }
}
Clase producto congelado
package testherencia2;
public class ProductoCongelado extends Producto {
    private String temperaturaRecomendada;
    public ProductoCongelado(String fechaCaducidad, String numeroLote) {
        super(fechaCaducidad, numeroLote);
        temperaturaRecomendada = "Unknown";
    }
    public String getTemperaturaRecomendada() {
        return temperaturaRecomendada;
    }
    public void setTemperaturaRecomendada(String temperaturaRecomendada) {
        this.temperaturaRecomendada = temperaturaRecomendada;
    }
    public void mostrarProductoCongelado() {
        System.out.println("Producto fresco de fecha de vencimiento " + getFechaCaducidad() + " con numero de lote " + getNumeroLote() + ""
                + " temperatura de congelación recomendada " + getTemperaturaRecomendada());
    }
}
Una pregunta que significa "Unknown" en un constructor.