I've created a Person class, and a class that inherits from it, the Professor class. Now, I've declared my setters private in the Person class and Professor class. I want the constructors to set the variables, by calling the setters and performing validation. Is what I've done correct? If not, what can I do to correct it?
Person Class:
public class Person {
private String firstName;
private String lastName;
public Person(String firstname,String lastname) throws InvalidDataException
{
    setFirstName(firstname);
    setLastName(lastname);
}
public String getFirstName() {
    return firstName;
}
private void setFirstName(String firstName) throws InvalidDataException {
 if ( firstName == null || firstName.length() < 1) {
      throw new InvalidDataException("Person Must have First Name");}
    this.firstName = firstName;
}
public String getLastName() {
    return lastName;
}
private void setLastName(String lastName) throws InvalidDataException {
     if ( lastName == null ||  lastName.length() < 1) {
          throw new InvalidDataException("Person Must have Last Name");}
    this.lastName = lastName;
}
Professor class
public class Professor extends Person {
private String  professorID;
public Professor(String professorID,String firstname, String lastname) throws InvalidDataException {
    super(firstname, lastname);
    // TODO Auto-generated constructor stub
    this.setID(professorID);
}
private void setID(String professorID) throws InvalidDataException{
     if ( professorID == null ||professorID.length() < 1) {
          throw new InvalidDataException("Person Must have ID");}
    this.professorID = professorID;
}
public String getID()
{
    return this.professorID;
}
public void printData()
{
     System.out.println("Professor ID: " + this.getID() + " First Name: " + this.getFirstName() + " Last Name: " + this.getLastName());
}
}
 
     
    