Hola, el código es correcto. Hay un par de detalles que deberías tener en cuenta como cosas a mejorar.
Donde pones: System.out.println ("Ha cambiado el estado civil del Medico a: " + valorcasado);
Como casado es un boolean, si usamos setCasado para establecer el valor de casado a true aparece el mensaje:
Ha cambiado el estado civil del Medico a: true
Esto no es correcto, el estado civil no es true. Lo que es true es el valor de la variable boolena casado, que representa si el médico está casado o no.
Para resolver esto podrías usar este código:
System.out.println ("Ha cambiado el estado civil del Medico. Actualmente casado = " + valorcasado);
Esto es más correcto.
La otra cosa a mejorar es la forma de escribir los nombres de métodos (al igual que los de variables). En lugar de setcasado ó setedad es siempre preferible setCasado ó setEdad, es decir, siempre donde empieza una nueva palabra ponerlo en mayúsculas. Esto no es obligatorio pero la mayoría de los programadores lo hacen porque crea un código de más calidad.
Saludos!