Hola Ronald!
Veo que eres nuevo en el foro, así que me toca hacer las veces de anfitrión: Bienvenido!
Antes de meternos directamente con el código que has publicado quisiera pedirte lo siguiente:
cuando quieras poner en los foros tu solución para un ejercicio crea un Nuevo Tema. De ese modo mantenemos más ordenado el foro evitando mezclar respuestas de personas distintas en un mismo hilo.
¿Cómo hacer para crear un Nuevo Tema?. Una vez que te logueas en el foro, entras en "Aprender a programar desde cero", y haz click en "NUEVO TEMA".
No olvides de escribir en el título del nuevo tema a qué ejercicio se refiere tu publicación.
En otro orden de cosas (pero también por cuestiones de orden), cuando publiques los códigos, asegúrate que el código vaya entre las etiquetas [ code ] [ /code ] .
Puedes leer este link
https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 donde se explica muy bien cómo realizar una publicación en el foro.
Ahora sí, vayamos al código que has enviado.
Al código lo veo muy bien, está bien estructurado y has tenido en cuenta la convención para nombrar los campos y los métodos, muy bien por ello!
El Constructor también está perfecto , incializando todos los campos de instancia a valor por defecto.
He de hacerte una observación con respecto a la declaración de los campos de instancia. Tu declaración de campos de instancia es:
public class Medico {
String nombre, apellido;
String numeroDocumentoIdentidad;
String especialidad;
int edad;
boolean casado;
Medico med1 = new Medico();
¿Por qué incluyes aquí la línea ?
Medico med1 = new Medico();
No deberías crear un objeto tipo Medico en esta parte del programa, no hay razón para ello. Te sugiero la elimines.
Y para finalizar, quisiera apuntarte algo respecto del método setNombreApellido de tu código
public void setNombreApellido(String insertarNombre, String insertarApellido){
nombre = insertarNombre;
System.out.println("Se ha cambiado el nombre anterior por"+nombre);
apellido = insertarApellido;
System.out.println("se ha cambiado el apellido anterior por"+apellido);
}
No sería correcto tener un método set que modificara dos campos de instancia a la vez.
Así como luego defines un método tipo función getNombre() que devuelve el campo nombre del objeto, y un método tipo función getApellido() que devuelve el campo apellido del objeto, pues entonces es correcto tener un método setNombre y un método setApellido que asignen valores a sus respectivos campos de manera independiente.
Te sugiero que desdobles esa función en dos funciones tipo procedimiento: una llamada setNombre y la otra llamada setApellido.