Clase principal main
package testHerencia3;
import java.util.Calendar;
public class testHerencia3 {
    public static void main(String[] args) {
        System.out.println("LOS PRODUCTOS FRESCO.");
        Calendar fecha1 = Calendar.getInstance();
        fecha1.set(2018, 9, 12);
        ProductoFresco productoFresco1 = new ProductoFresco(fecha1, "00009876");
        Calendar fecha2 = Calendar.getInstance();
        fecha2.set(2014, 9, 12);
        productoFresco1.setFechaEnvasado(fecha2);
        productoFresco1.setPaisOrigen("Paraguay");
        productoFresco1.mostrarProductoFresco();
        System.out.println("\n");
        Calendar fecha3 = Calendar.getInstance();
        fecha3.set(2017, 9, 12);
        ProductoFresco productoFresco2 = new ProductoFresco(fecha3, "000045454");
        Calendar fecha4 = Calendar.getInstance();
        fecha4.set(2012, 8, 12);
        productoFresco2.setFechaEnvasado(fecha4);
        productoFresco2.setPaisOrigen("Paraguay");
        productoFresco2.mostrarProductoFresco();
        System.out.println("\n");
        System.out.println("LOS PRODUCTOS REFRIGERADO.");
        Calendar fecha5 = Calendar.getInstance();
        fecha1.set(2019, 10, 22);
        ProductoRefrigerado productoRefrigerado1 = new ProductoRefrigerado(fecha5, "00032323");
        Calendar fecha6 = Calendar.getInstance();
        fecha6.set(2015, 11, 02);
        productoRefrigerado1.setFechaEnvasado(fecha6);
        productoRefrigerado1.setOrgSupAlimentaria("854dd");
        productoRefrigerado1.setPaisOrigen("Paraguay");
        productoRefrigerado1.setTemperaturaRecomendada(-2);
        productoRefrigerado1.mostrarProductoRefrigerado();
        System.out.println("\n");
        Calendar fecha7 = Calendar.getInstance();
        fecha7.set(2020, 10, 02);
        ProductoRefrigerado productoRefrigerado2 = new ProductoRefrigerado(fecha7, "00032323");
        Calendar fecha8 = Calendar.getInstance();
        fecha8.set(2011, 10, 02);
        productoRefrigerado2.setFechaEnvasado(fecha8);
        productoRefrigerado2.setOrgSupAlimentaria("4343FF");
        productoRefrigerado2.setPaisOrigen("Paraguay");
        productoRefrigerado2.setTemperaturaRecomendada(-6);
        productoRefrigerado2.mostrarProductoRefrigerado();
        System.out.println("\n");
        Calendar fecha9 = Calendar.getInstance();
        fecha9.set(2016, 10, 22);
        ProductoRefrigerado productoRefrigerado3 = new ProductoRefrigerado(fecha9, "00032323");
        Calendar fecha10 = Calendar.getInstance();
        fecha10.set(2012, 11, 02);
        productoRefrigerado3.setFechaEnvasado(fecha10);
        productoRefrigerado3.setOrgSupAlimentaria("854EE");
        productoRefrigerado3.setPaisOrigen("Paraguay");
        productoRefrigerado3.setTemperaturaRecomendada(-3);
        productoRefrigerado3.mostrarProductoRefrigerado();
        System.out.println("\n");
        System.out.println("LOS PRODUCTOS CONGELADOS");
        System.out.println("CONGELADOS POR AIRE");
        Calendar fecha11 = Calendar.getInstance();
        fecha11.set(2018, 9, 12);
        CongeladoAire congeladoAire1 = new CongeladoAire(15, 10, 30, 45, fecha11, "000032323");
        congeladoAire1.setTemperaturaRecomendada(-4);
        Calendar fecha12 = Calendar.getInstance();
        fecha12.set(2010, 9, 12);
        congeladoAire1.setFechaEnvasado(fecha12);
        congeladoAire1.setPaisOrigen("Paraguay");
        congeladoAire1.mostraProductoCongeladoAire();
        System.out.println("\n");
        Calendar fecha13 = Calendar.getInstance();
        fecha13.set(2019, 8, 11);
        CongeladoAire congeladoAire2 = new CongeladoAire(18, 20, 22, 40, fecha13, "000066663");
        congeladoAire2.setTemperaturaRecomendada(-5);
        Calendar fecha14 = Calendar.getInstance();
        fecha14.set(2011, 9, 12);
        congeladoAire2.setFechaEnvasado(fecha14);
        congeladoAire2.setPaisOrigen("Paraguay");
        congeladoAire2.mostraProductoCongeladoAire();
        System.out.println("\n");
        System.out.println("CONGELADO POR AGUA");
        Calendar fecha15 = Calendar.getInstance();
        fecha15.set(2019, 8, 11);
        CongeladoAgua congeladoAgua1 = new CongeladoAgua(20, fecha15, "00034343");
        Calendar fecha16 = Calendar.getInstance();
        fecha16.set(2014, 7, 10);
        congeladoAgua1.setFechaEnvasado(fecha16);
        congeladoAgua1.setTemperaturaRecomendada(-5);
        congeladoAgua1.setPaisOrigen("Paraguay");
        congeladoAgua1.mostrarProductoCongeladoAgua();
        System.out.println("\n");
        Calendar fecha17 = Calendar.getInstance();
        fecha15.set(2019, 8, 11);
        CongeladoAgua congeladoAgua2 = new CongeladoAgua(30, fecha17, "00034343");
        Calendar fecha18 = Calendar.getInstance();
        fecha18.set(2016, 7, 10);
        congeladoAgua2.setFechaEnvasado(fecha18);
        congeladoAgua2.setTemperaturaRecomendada(-2);
        congeladoAgua2.setPaisOrigen("Paraguay");
        congeladoAgua2.mostrarProductoCongeladoAgua();
        System.out.println("\n");
        System.out.println("CONGELADO POR NITROGENO.");
        Calendar fecha19 = Calendar.getInstance();
        fecha19.set(2019, 4, 11);
        //como no se los metodo de congelamieto le puse metodo1 para probar
        CongeladoNitrogeno congeladoNitrogeno = new CongeladoNitrogeno("metodo1", "30", fecha19, "0003453");
        Calendar fecha20 = Calendar.getInstance();
        fecha20.set(2011, 4, 10);
        congeladoNitrogeno.setFechaEnvasado(fecha20);
        congeladoNitrogeno.setTemperaturaRecomendada(-6);
        congeladoNitrogeno.setPaisOrigen("Paraguay");
        congeladoNitrogeno.mostrarProductoCongeladoNitrogeno();
    }
}Clase producto
package testHerencia3;
import java.util.Calendar;
public class Producto {
    private Calendar fechaCaducidad;
    private String numeroLote;
    //public Producto() {
    //}
    public Producto(Calendar fechaCaducidad, String numeroLote) {
        this.fechaCaducidad = fechaCaducidad;
        this.numeroLote = numeroLote;
    }
    public Calendar getFechaCaducidad() {
        return fechaCaducidad;
    }
    public void setFechaCaducidad(Calendar fechaCaducidad) {
        this.fechaCaducidad = fechaCaducidad;
    }
    public String getNumeroLote() {
        return numeroLote;
    }
    public void setNumeroLote(String numeroLote) {
        this.numeroLote = numeroLote;
    }
}Clase pruducto refrigerado extends de la clase producto 
package testHerencia3;
import java.util.Calendar;
public class ProductoRefrigerado extends Producto {
    private String orgSupAlimentaria;
    private Calendar fechaEnvasado;
    private double temperaturaRecomendada;
    private String paisOrigen;
    public ProductoRefrigerado(Calendar fechaCaducidad, String numeroLote) {
        super(fechaCaducidad, numeroLote);
    }
    public ProductoRefrigerado(String orgSupAlimentaria, Calendar fechaEnvasado, double temperaturaRecomendada, String paisOrigen, Calendar fechaCaducidad, String numeroLote) {
        super(fechaCaducidad, numeroLote);
        this.orgSupAlimentaria = orgSupAlimentaria;
        this.fechaEnvasado = fechaEnvasado;
        this.temperaturaRecomendada = temperaturaRecomendada;
        this.paisOrigen = paisOrigen;
    }
    public String getOrgSupAlimentaria() {
        return orgSupAlimentaria;
    }
    public void setOrgSupAlimentaria(String orgSupAlimentaria) {
        this.orgSupAlimentaria = orgSupAlimentaria;
    }
    public Calendar getFechaEnvasado() {
        return fechaEnvasado;
    }
    public void setFechaEnvasado(Calendar fechaEnvasado) {
        this.fechaEnvasado = fechaEnvasado;
    }
    public double getTemperaturaRecomendada() {
        return temperaturaRecomendada;
    }
    public void setTemperaturaRecomendada(double temperaturaRecomendada) {
        this.temperaturaRecomendada = temperaturaRecomendada;
    }
    public String getPaisOrigen() {
        return paisOrigen;
    }
    public void setPaisOrigen(String paisOrigen) {
        this.paisOrigen = paisOrigen;
    }
    public void mostrarProductoRefrigerado() {
        System.out.println("Producto refrigerado con fecha de envasado " + getFechaEnvasado().getTime() + " fecha de vencimiento " + getFechaCaducidad().getTime() + " con numero de lote " + getNumeroLote() + "\n"
                + " código del organismo de supervisión alimentaria " + getOrgSupAlimentaria() + " temperatura recomendada de mantenimiento " + getTemperaturaRecomendada() + ""
                + " pais de origen " + getPaisOrigen());
    }
}
Clase fresco refrigerado extends de la clase producto 
package testHerencia3;
import java.util.Calendar;
public class ProductoCongelado extends Producto {
    private Calendar fechaEnvasado;
    private String paisOrigen;
    private double temperaturaRecomendada;
    public ProductoCongelado(Calendar fechaCaducidad, String numeroLote) {
        super(fechaCaducidad, numeroLote);
    }
    public ProductoCongelado(Calendar fechaEnvasado, String paisOrigen, double temperaturaRecomendada, Calendar fechaCaducidad, String numeroLote) {
        super(fechaCaducidad, numeroLote);
        this.fechaEnvasado = fechaEnvasado;
        this.paisOrigen = paisOrigen;
        this.temperaturaRecomendada = temperaturaRecomendada;
    }
    public Calendar getFechaEnvasado() {
        return fechaEnvasado;
    }
    public void setFechaEnvasado(Calendar fechaEnvasado) {
        this.fechaEnvasado = fechaEnvasado;
    }
    public String getPaisOrigen() {
        return paisOrigen;
    }
    public void setPaisOrigen(String paisOrigen) {
        this.paisOrigen = paisOrigen;
    }
    public double getTemperaturaRecomendada() {
        return temperaturaRecomendada;
    }
    public void setTemperaturaRecomendada(double temperaturaRecomendada) {
        this.temperaturaRecomendada = temperaturaRecomendada;
    }
    public void mostrarProductoCongelado() {
        System.out.println("Producto congelado de fecha de vencimiento " + getFechaCaducidad() + " con numero de lote " + getNumeroLote() + ""
                + " temperatura de congelación recomendada " + getTemperaturaRecomendada());
    }
}
clase producto congelado extends de la clase  Producto
package testHerencia3;
import java.util.Calendar;
public class ProductoCongelado extends Producto {
    private Calendar fechaEnvasado;
    private String paisOrigen;
    private double temperaturaRecomendada;
    public ProductoCongelado(Calendar fechaCaducidad, String numeroLote) {
        super(fechaCaducidad, numeroLote);
    }
    public ProductoCongelado(Calendar fechaEnvasado, String paisOrigen, double temperaturaRecomendada, Calendar fechaCaducidad, String numeroLote) {
        super(fechaCaducidad, numeroLote);
        this.fechaEnvasado = fechaEnvasado;
        this.paisOrigen = paisOrigen;
        this.temperaturaRecomendada = temperaturaRecomendada;
    }
    public Calendar getFechaEnvasado() {
        return fechaEnvasado;
    }
    public void setFechaEnvasado(Calendar fechaEnvasado) {
        this.fechaEnvasado = fechaEnvasado;
    }
    public String getPaisOrigen() {
        return paisOrigen;
    }
    public void setPaisOrigen(String paisOrigen) {
        this.paisOrigen = paisOrigen;
    }
    public double getTemperaturaRecomendada() {
        return temperaturaRecomendada;
    }
    public void setTemperaturaRecomendada(double temperaturaRecomendada) {
        this.temperaturaRecomendada = temperaturaRecomendada;
    }
    public void mostrarProductoCongelado() {
        System.out.println("Producto congelado de fecha de vencimiento " + getFechaCaducidad() + " con numero de lote " + getNumeroLote() + ""
                + " temperatura de congelación recomendada " + getTemperaturaRecomendada());
    }
}clase de producto congelado por nitrogeno extends ProductoCongelado
package testHerencia3;
import java.util.Calendar;
public class CongeladoNitrogeno extends ProductoCongelado {
    private String metodoCongelamiento;
    private String tiempoExposicion;
    public CongeladoNitrogeno(String metodoCongelamiento, String tiempoExposicion, Calendar fechaCaducidad, String numeroLote) {
        super(fechaCaducidad, numeroLote);
        this.metodoCongelamiento = metodoCongelamiento;
        this.tiempoExposicion = tiempoExposicion;
    }
    public CongeladoNitrogeno(String metodoCongelamiento, String tiempoExposicion, Calendar fechaEnvasado, String paisOrigen, double temperaturaRecomendada, Calendar fechaCaducidad, String numeroLote) {
        super(fechaEnvasado, paisOrigen, temperaturaRecomendada, fechaCaducidad, numeroLote);
        this.metodoCongelamiento = metodoCongelamiento;
        this.tiempoExposicion = tiempoExposicion;
    }
    public String getMetodoCongelamiento() {
        return metodoCongelamiento;
    }
    public void setMetodoCongelamiento(String metodoCongelamiento) {
        this.metodoCongelamiento = metodoCongelamiento;
    }
    public String getTiempoExposicion() {
        return tiempoExposicion;
    }
    public void setTiempoExposicion(String tiempoExposicion) {
        this.tiempoExposicion = tiempoExposicion;
    }
    public void mostrarProductoCongeladoNitrogeno() {
        System.out.println("Producto congelado por nitrogeno de fecha de envasado " + getFechaEnvasado().getTime() + " con numero de lote " + getNumeroLote() + "\n"
                + " temperatura de congelación recomendada " + getTemperaturaRecomendada() + " con fecha de vencimiento " + getFechaCaducidad().getTime() + "\n"
                + "  metodo de congelamiento " + getMetodoCongelamiento() + " pais de origen " + getPaisOrigen() + " tiempo de exposición al nitrógeno " + getTiempoExposicion() + "s");
    }
}clase de producto congelado por aire extends de la clase producto congelado
package testHerencia3;
import java.util.Calendar;
public class CongeladoAire extends ProductoCongelado {
    double nitrogeno;
    double oxigeno;
    double dioxidoCarbono;
    double vaporAgua;
    public CongeladoAire(double nitrogeno, double oxigeno, double dioxidoCarbono, double vaporAgua, Calendar fechaCaducidad, String numeroLote) {
        super(fechaCaducidad, numeroLote);
        this.nitrogeno = nitrogeno;
        this.oxigeno = oxigeno;
        this.dioxidoCarbono = dioxidoCarbono;
        this.vaporAgua = vaporAgua;
    }
    public CongeladoAire(double nitrogeno, double oxigeno, double dioxidoCarbono, double vaporAgua, Calendar fechaEnvasado, String paisOrigen, double temperaturaRecomendada, Calendar fechaCaducidad, String numeroLote) {
        super(fechaEnvasado, paisOrigen, temperaturaRecomendada, fechaCaducidad, numeroLote);
        this.nitrogeno = nitrogeno;
        this.oxigeno = oxigeno;
        this.dioxidoCarbono = dioxidoCarbono;
        this.vaporAgua = vaporAgua;
    }
    public double getNitrogeno() {
        return nitrogeno;
    }
    public void setNitrogeno(double nitrogeno) {
        this.nitrogeno = nitrogeno;
    }
    public double getOxigeno() {
        return oxigeno;
    }
    public void setOxigeno(double oxigeno) {
        this.oxigeno = oxigeno;
    }
    public double getDioxidoCarbono() {
        return dioxidoCarbono;
    }
    public void setDioxidoCarbono(double dioxidoCarbono) {
        this.dioxidoCarbono = dioxidoCarbono;
    }
    public double getVaporAgua() {
        return vaporAgua;
    }
    public void setVaporAgua(double vaporAgua) {
        this.vaporAgua = vaporAgua;
    }
    public void mostraProductoCongeladoAire() {
        System.out.println("Producto congelado con aire con fecha de envasado " + getFechaEnvasado().getTime() + " con numero de lote " + getNumeroLote() + "\n"
                + " temperatura de congelación recomendada " + getTemperaturaRecomendada() + " con fecha de vencimiento " + getFechaCaducidad().getTime() + "\n"
                + " con una composicion de aire de congelado en % de " + " nitrogeno: " + getNitrogeno() + "% " + " oxigeno: " + getOxigeno() + "% " + "\n"
                + " dioxido de carbono: " + getDioxidoCarbono() + "% " + " vapor de agua: " + getVaporAgua() + "%");
    }
}clase de producto congelado por agua extends de la clase producto congelado
package testHerencia3;
import java.util.Calendar;
public class CongeladoAgua extends ProductoCongelado {
    private double salinidaAgua;
    public CongeladoAgua(double salinidaAgua, Calendar fechaCaducidad, String numeroLote) {
        super(fechaCaducidad, numeroLote);
        this.salinidaAgua = salinidaAgua;
    }
    public CongeladoAgua(double salinidaAgua, Calendar fechaEnvasado, String paisOrigen, double temperaturaRecomendada, Calendar fechaCaducidad, String numeroLote) {
        super(fechaEnvasado, paisOrigen, temperaturaRecomendada, fechaCaducidad, numeroLote);
        this.salinidaAgua = salinidaAgua;
    }
    public double getSalinidaAgua() {
        return salinidaAgua;
    }
    public void setSalinidaAgua(double salinidaAgua) {
        this.salinidaAgua = salinidaAgua;
    }
    public void mostrarProductoCongeladoAgua() {
        System.out.println("Producto congelado con agua de fecha de envasado " + getFechaEnvasado().getTime() + " con numero de lote " + getNumeroLote() + "\n"
                + " temperatura de congelación recomendada " + getTemperaturaRecomendada() + " con fecha de vencimiento " + getFechaCaducidad().getTime() + "\n"
                + "  salinidad del agua de " + getSalinidaAgua() + "g" + " por litro de agua" + " de origen " + getPaisOrigen());
    }
}