Olá Taina! É como o João disse, seu for()
está com um pequeno problema. Perceba que ele adiciona um funcionário quando o item da array estiver vazio, logo igual a null.
So que veja que no inicio, todos os campos da sua array estão iguais a null, porque não tem nenhum funcionário adicionado, logo quando você chama o método adiciona, ele percorre toda sua array e como todos estão iguais a null ele adiciona o mesmo funcionário varias vezes.
Quando você tenta adicionar um segundo funcionário, ele não adiciona porque a condição não é mais atendida, todos os campos da array estão preenchidos, nenhum é igual a null mais, assim ele não adiciona o outro funcionário.
Você pode mudar a sua função e deixar como o João fez, porém acho meio desnecessário ter que criar um atributo na classe apenas para armazenar o valor que indica o próximo index que será adicionado um novo funcionário. Fora que prejudica um pouco a semântica do código. Porque um objeto do tipo Empresa teria uma característica chamada posição? Meio sem sentido, concorda não?
Então uma forma de consertar o problema é simplesmente, fazendo o loop parar assim que um funcionario for adicionado. Pois um funcionário só precisa ser adicionado em uma posição, depois de ele ser adicionado, também não é necessário continuar percorrendo a Array.
Assim, basta adicionar um break
para que o loop pare ao adicionar o funcionário, adicionando apenas uma linha a mais em seu método:
void adiciona (Funcionario f) {
for (int i=0; i < empregados.length; i++) {
if (empregados[i] == null) {
this.empregados[i] = f;
break;
}else{
continue;
}
}
}
Espero ter ajudado! Bons Estudos!