Hola KillerNemesis!
El objetivo en este ejercicio es dominar la declaración de diferentes tipos de constructores,
(Constructor general o sin parámetros y Constructor/es con parámetros) cosa que has dominado muy bien en tu propuesta como solución a este ejercicio. Has decido excluir la declaración de los posibles parámetros que inicializarian el valor de las variables de tipo boolean (esCasado y esEspecialista) y has decidido asignar su valor por defecto directamente, este tipo de situaciones es opcional por ejemplo podríamos poner el mismo escenario que has planteado. En resumen, tus dos constructores están correctos. Sin embargo te comentare algunas cosas que debes corregir en cuanto al código en general.
1ro: El nombre de un método get o método set, debe de ser relativo al nombre de la variable con que dicho método ínter actúe, la formar correcta de definir un nombre para un método get o set es usando exactamente el mismo nombre de la variable + la palabra set o get ante puesta a este, así tu método getNombreProfesor() quedaría correctamente así: getNombre() (idem para todos los demás métodos get y set) También te ha faltado incluir los getters correspondientes a las variables de tipo boolean.
2do: Veo que has decidido no incluir los métodos setters, (o tal vez lo has olvidado) en cualquiera de los casos debes tener en cuenta que un constructor con parámetros no sustituye el trabajo u objetivo de un método set, como harías para cambiar la edad de un profesor que has contratado ayer, con 34 años de edad pero que hoy esta de cumpleaños? He aquí la importancia de un método set, por lo tanto, como buena practica te aconsejo que en todos tus códigos incluyas tanto los métodos setters como los métodos getters.
Estos son los puntos que debes reforzar.
Saludos!