Qual a necessidade do método mostraEmpregados() (classe Empresa)? Ele faz exatamente o que método mostra()Funcionario) faz. É uma questão de boa prática ter métodos para cada classe ainda que eles provoquem o mesmo resultado?
void mostra() {
System.out.println("Nome: " + this.nome);
System.out.println("RG: " + this.RG);
System.out.println("Funcao: " + this.funcao);
System.out.println("Departamento: " + this.departamento);
System.out.println("Salario: " + this.salario);
System.out.println("Dia: " + this.dataEntrada.dia);
System.out.println("Mes: " + this.dataEntrada.mes);
System.out.println("Ano: " + this.dataEntrada.ano);
}