Então pessoal, não estou conseguindo criar o get e o set da data corretamente, segue as classes que estou utilizando:
public class Principal {
    public static void main(String[] args) {
       Empresa empresa = new Empresa();
       empresa.empregados = new Funcionario[2];
       Data data_entrada = new Data();
        Funcionario f = new Funcionario();
        f.setSalario(1000);
        f.setNome("Gabriel");
        f.setRg("123344566");
        f.setDept("rh");
        data_entrada.preencheData(14, 4, 1999);
        f.setData(data_entrada);
        empresa.adiciona(f);
        Funcionario f2 = new Funcionario();
        f2.setSalario(1100);
        f2.setNome("Melo");
        f2.setRg("111111111");
        f2.setDept("rh");
        data_entrada.preencheData(14, 5, 1998);
        f2.setData(data_entrada);
        empresa.adiciona(f2);
      empresa.mostraEmpregados();
    }
}public class Funcionario {
    private String nome;
    private String dept;
    private double sal;
    private Data data_entrada = new Data();
    private String rg;
    void recebeAumento(double val_aumento){
        this.sal += val_aumento;
    }
    double calculaGanhoAnual(){
        return this.sal*12;
    }
    void mostra(){
        System.out.println("Nome: " + this.nome);
        System.out.println("Dept: " + this.dept);
        System.out.println("Salario: " + this.sal);
        System.out.println("Data de entrada: " + this.getData().getFormatada());
        System.out.println("RG: " + this.rg);
        System.out.println("Ganho anual: R$" + this.calculaGanhoAnual());
        System.out.println("-------------");
    }
    public double getSalario(){
        return this.sal;
    }
    public void setSalario(double salario){
        this.sal = salario;
    }
    public String getNome(){
        return this.nome;
    }
    public void setNome(String name){
        this.nome = name;
    }
    public String getDept(){
        return this.dept;
    }
    public void setDept(String depart){
        this.dept = depart;
    }
    public String getRg(){
        return this.rg;
    }
    public void setRg(String Rg){
        this.rg = Rg;
    }
    public Data getData(){
        return data_entrada;
    }
    public void setData(Data d){
        this.data_entrada = d;
    }
}public class Data {
    int dia;
    int mes;
    int ano;
     void preencheData (int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }
     String getFormatada(){
         String formata = this.dia + "/" + this.mes + "/" + this.ano;
         return formata;
     }
}public class Empresa {
    String nome;
    String cpf;
    int livre = 0;
    Funcionario[] empregados;
    void adiciona(Funcionario f) {
        this.empregados[this.livre] = f;
        this.livre++;
    }
    void mostraEmpregados() {
        for (int i = 0; i < this.livre; i++) {
            System.out.println("Funcionário na posição: " + (i+1));
            this.empregados[i].mostra();
        }
    }
    boolean contem(Funcionario f){
        for(int i = 0; i < this.livre; i++){
            if(f == this.empregados[i]){
                return true;
            } 
        }
        return false;
    }
}Essa é minha saída quando executo:
run:
Funcionário na posição: 1
Nome: Gabriel
Dept: rh
Salario: 1000.0
Data de entrada: 14/5/1998
RG: 123344566
Ganho anual: R$12000.0
-------------
Funcionário na posição: 2
Nome: Melo
Dept: rh
Salario: 1100.0
Data de entrada: 14/5/1998
RG: 111111111
Ganho anual: R$13200.0
-------------
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)Como vcs podem ver, as datas estão iguais! Não sei o que pode estar acontecendo. Agradeço qualquer ajuda!
 
            