Respuesta al ejercicio CU00686B del tutorial java desde cero:
public class Producto{
    private String nombreDeProducto, fechaDeCaducidad;
    private int numeroDeLote;
    
    
    public Producto(String nombreDeProducto, String fechaDeCaducidad, int numeroDeLote){
    
        this.nombreDeProducto = nombreDeProducto;
        this.fechaDeCaducidad = fechaDeCaducidad;
        this.numeroDeLote = numeroDeLote;
        
    }
    public Producto(){}
     public void setNombreDeProducto(String nombreDeProducto){
    
        this.nombreDeProducto = nombreDeProducto;
    }
    
    public String getNombreDeProducto(){return nombreDeProducto;}
    
    public void setFechaDeCaducidad(String fechaDeCaducidad){
    
        this.fechaDeCaducidad = fechaDeCaducidad;
    }
    
    public String getFechaDeCaducidad(){return fechaDeCaducidad;}
    
    public void setNumeroDeLote(int numeroDeLote){
    
        this.numeroDeLote = numeroDeLote;
    }
    
    public int getNumeroDeLote(){return numeroDeLote;}
}
public class ProductoFresco extends Producto{
    private String fechaEnvasado;
    private String paisOrigen;
    
    
    public ProductoFresco(String nombre, String fechaCaducidad, int numeroLote, String fechaEnvasado, String paisOrigen){
       super(nombre, fechaCaducidad, numeroLote);
       this.fechaEnvasado = fechaEnvasado;
       this.paisOrigen= paisOrigen;
    }
    
    public ProductoFresco(String nombre, String fechaCaducidad, int numeroLote){
    
        super(nombre, fechaCaducidad, numeroLote);
    }
    
    public ProductoFresco(){
      super(); 
    }
    
    public void setFechaEnvasado(String fechaEnvasado){
    
        fechaEnvasado = fechaEnvasado;
    }
    
    public String getFechaEnvasado(){return fechaEnvasado;}
    
    public void setPaisDeOrigen(String paisOrigen){
    
        paisOrigen = paisOrigen;
    }
    
    public String getPaisOrigen(){return paisOrigen;}
    
    public void mostrarProFresco(){
   
        System.out.println("Contenido del Producto Fresco\nNombre: "+getNombreDeProducto()+"\nNumero de lote: "+ getNumeroDeLote() +
        "\nPais de Origen: "+ getPaisOrigen()+"\nFecha de Envasado: "+ getFechaEnvasado()+"\nFecha de Caducidad: " + getFechaDeCaducidad()+"\n");
        
        }
}
public class ProductoRefigerado extends ProductoFresco
{
    private  String codigoSupervisionAlimentaria;
    
    public ProductoRefigerado(){
    super();}
   
    public ProductoRefigerado(String nombre, String fechaDeCaducidad, int numero, String codigo){
    
        super( nombre, fechaDeCaducidad, numero);
        codigoSupervisionAlimentaria = codigo;    
    }
    
    public ProductoRefigerado(String nombre, String fechaDeCaducidad, int numero){
    
        super(nombre, fechaDeCaducidad, numero);
    }
    
    public void setCodigoSupervisionAlimentaria(String codigoSupervisionAlimentaria){
    
        codigoSupervisionAlimentaria = codigoSupervisionAlimentaria;
    }
    
    public String getCodigoSupervisionAlimentaria(){return codigoSupervisionAlimentaria;}
    
    public void mostrarProRefigerado(){
    
        System.out.println("Contenido del producto refigerado\n"+ "Nombre: "+ getNombreDeProducto() +"\nFecha de caducidad: "+getFechaDeCaducidad()+"\nNumero de Lote: "+getNumeroDeLote()+"\nCodigo de Supervision Alimentaria: "+getCodigoSupervisionAlimentaria()+"\n");
    }
}
public class ProductoCongelado extends  ProductoRefigerado 
{
   
    private int temperaturaRecomendada;
    
    public ProductoCongelado(){}
    
    public ProductoCongelado(String nombre, String fechaDeCaducidad, int numeroDeLote, int temperatura){
       super(nombre, fechaDeCaducidad, numeroDeLote);
        temperaturaRecomendada = temperatura;
    }
    
    public void setTemperaturaRecomendada(int temperaturaRecomendada){
    
        temperaturaRecomendada = temperaturaRecomendada;
    }
    
    public int getTemperaturaRecomendada(){return temperaturaRecomendada;}
    
    public void mostrarProductos(){
    
        System.out.println("Contenido del producto congelado\nNombre: " +getNombreDeProducto()+"\nFecha de Caducidad: "+ getFechaDeCaducidad() + "\nNumero de Lote: " + getNumeroDeLote() +"\nTemperatura de Congelado: "+ getTemperaturaRecomendada()+" grado\n");
    }
}
public class TestHerencia
{
    // instance variables - replace the example below with your own
    public static void main(){
   
        //creacion del objeto producto fresco con nombre productoF
        ProductoFresco productoF = new ProductoFresco("Fresa","21/08/2016",825,"21/03/2016","Rep. Dominicana");
        //creacion del objeto producto refigerado con nombre productoR
        ProductoRefigerado productoR = new ProductoRefigerado("Jugo de Naranja","12/09/2016",698,"FC-2016-17");
        //creacion del objeto producto congelado con nombre productoC
        ProductoCongelado productoC = new ProductoCongelado("camarones","24/05/2016",125, -1);
   
       //metodo para mostrar el contenido de los productos frescos
       productoF.mostrarProFresco();   
       //metodo para mostrar el contenido de los productos refigerados
       productoR.mostrarProRefigerado(); 
       //metodo para mostrar el contenido de los productos congelados
       productoC.mostrarProductos(); 
}
}