Hola Fede! Ya estás al final del camino, al menos de este curso. Pero lo que es java todavía tienes todo el camino que quieras por delante
El código del método toString de la clase Persona me pareció raro cuando vi String estadoCivil = " "; pero luego comprendí por qué lo habías hecho ¡buen truco!
Debes mejorar una cosa a nivel de conceptos.
public void getCamaraEnQueTrabaja () {
System.out.println ("Diputados");
}
No es un método bien definido. El prefijo get se usa para indicar que el método devuelve algo. Lo correcto hubiera sido
public String getCamaraEnQueTrabaja () {
return "Diputados";
}
Los métodos no deben encargarse de mostrar cosas por pantalla (excepto métodos específicamente preparados para ello como mostrarInformacion o imprimirInformacion)
En la clase NominaLegisladores tienes que mejorar este código
public void muestraContenido () {
for (Legislador tmp: listaLegisladores) {
System.out.println (tmp.toString());
String tmpStr = "";
if (tmp instanceof Diputado) {
tmpStr = "Diputados";
} else {
tmpStr = "Senadores";
}
System.out.println ("Este Legislador trabaja en la Cámara de " + tmpStr + "\n");
}
}
Fíjate cómo puedes dejarlo, ves que hay código que no era necesario:
public void muestraContenido () {
for (Legislador tmp: listaLegisladores) {
System.out.println (tmp.toString());
System.out.print ("Este Legislador trabaja en la Cámara de ");
tmp.getCamaraEnQueTrabaja();
}
}
Realmente era mejor que el método devolviera un String y así tendríamos
public void muestraContenido () {
for (Legislador tmp: listaLegisladores) {
System.out.println (tmp.toString());
System.out.print ("Este Legislador trabaja en la Cámara de "+tmp.getCamaraEnQueTrabaja());
}
}
Lo anterior es interesante porque vemos cómo al llamar a un método se aplica el método de una clase u otra según el polimorfismo, eso nos ahorra tener que estar haciendo comprobaciones (aunque algunas veces sí tendremos que hacer comprobaciones).
Corrige esas pequeñas cosas y todo bien
Salu2