Hola.
El motivo de que un constructor reciba parámetros, es utilizar dichos parámetros para incializar el objeto.
Así que este constructor:
public ProfesorCU00640B(String nombre, String apellidos, int edad,
boolean casado, boolean especialista) {
nombre = "Juan Diego";
apellidos = "Mosquera Herrera";
edad = 18;
casado = true;
especialista = true;
}
No tendría sentido.
Lo que tiene sentido es recuperar los valores de esos parámetros y adjudicarselos a los atributos del objeto. Tal que así:
public ProfesorCU00640B(String nombre, String apellidos, int edad,
boolean casado, boolean especialista) {
this.nombre = nombre;
this.apellidos = apellidos;
this.edad = edad;
this.casado = casado;
this.especialista = especialista;
}
Puesto que los parámetros tienen exactamente el mismo nombre, es necesario usar la palabra reservada this. para que el compilador sepa distinguirlos.
Los que está precedidos de this. corresponden a los atributos del objeto.
Los que no, corresponden a los parámetros del constructor.
Si los parametros tuvieran nombres distintos de los atributos, no sería necesario usar la palabra reservada this. ya que el compilador de Java ahora no tendría problemas para diferenciar los atributos de los parámetros por llamarse diferente.
Mucha gente sigue usando el this. igualmente en estos casos, eso ya depende del gusto de cada uno, pero no sería necesario y el siguiente ejemplo funcionaría perfectamente:
public ProfesorCU00640B(String nom, String ape, int ed,
boolean cas, boolean espe) {
nombre = nom;
apellidos = ape;
edad = ed;
casado = cas;
especialista = espe;
}