Когда вызывается конструктор Date (), содержимое полей дня, месяца и года не определено (возможно, я не могу вспомнить, обещает ли Java инициализировать переменные или нет, но, если это так, вероятно, оно равно нулю) поэтому вызовы getDay () и т. д. в этом конструкторе будут использовать неопределенные или нулевые значения при вычислении «проверено».
Другими словами, значения, которые вы передаете объекту в вызовах setDay (), setMonth () и т. Д., Сделаны ПОСЛЕ проверок, которые вы ожидаете сделать в конструкторе.
Я не совсем уверен, чего вы пытаетесь достичь, но, если он проверяет дату, вам нужно либо передать значения в конструктор, либо иметь отдельную функцию isValid (), либо иметь каждый из Функции сеттера обновляют действительность при добавлении нового поля.