Vamos lá, @Xablau:
Sua classe Pessoa tem um atributo Pessoa. Uma classe pode ter um atributo dela mesma? Claro que pode, estamos trabalhando com objetos.
public class Pessoa {
private String nome;
private int idade;
Pessoa[]filhos = new Pessoas[3]; // conforme enunciado, cada pessoa pode ter até três filhos.
//código omitido
}
Nessa classe, você vai ter o método adicionaFilhos. Para adicionar um filho, deve ser passado quem será adicionado. Um filho é um objeto do tipo Pessoa, certo? Então, toda vez que você adiciona um filho, você adiciona uma pessoa.
public boolean cadastrarFilho(Pessoa filhoQueVaiSerAdicionado) {
for (i=0; i <= filhos.length; i++){ // Percorre todo o vetor "filhos"
if (filhos[i] == null){ // Se o vetor na posição i for nulo, significa que há espaço
filhos[i]= filhoQueVaiSerAdicionado; // Ou seja, achou espaço. Aqui, você está adicionando o objeto Pessoa na posição vazia do seu vetor filho
return true;
}
}
return false;
}
Você também pode não passar um parâmetro e criar o filho no método. Vai da regra.
Não dá pra ser mais claro que isso.