ciao alla fine ho risolto modificando tutto come dicevi tu e cancellando il metodo toString() dalla classe Genitore ed usando nel main il metodo iterator().

codice:
class Test{
public static void main(String[] args){

Genitore p=new Genitore("elena","rossi");
Genitore p1=new Genitore("alessio","rossini");
Persona1 g;
g=p1;
System.out.println(p.toString());
p.addFiglio(g);
Iterator <Persona1> it=p.iterator();
for(Persona1 c:p){
    System.out.println("suo figlio è: "+"\n"+c);
}
}
}
Da terminale mi stampa:
il nome della persona è: elena
il cognome della persona è: rossi
suo figlio è:
il nome della persona è: alessio
il cognome della persona è: rossini

Perchè dopo la stringa "suo figlio è: " mi stampa ancora "il nome della persona e:....." ed "il cognome della persona è:",visto che alla variabile c di tipo Persona1 non ho invocato il metodo to String() della classe Persona1?