class Empresa {
Funcionario[] empregados;
String cnpj;
int livre = 0;
void adiciona(Funcionario f) {
this.empregados[this.livre] = f;
this.livre++;
}
}
O que acontece é que a referencia f a classe funcionario que será atribuída logo abaixo quando se checa com this.empregados nosso array com o this.livrem, ai atribuímos f a empregados com a posição apontada por this.livre, que depois incrementa ++ e assim nosso length do array é mutavel.
Isto ?