Модификатор final запрещает подклассам переопределять методы. Но конструкторы не могут быть переопределены по определению в Java, согласно спецификации языка. Поскольку конструкторы и так не переопределяются, помечать их как final — это просто лишнее и не имеет смысла.
Абстрактные методы не имеют реализации и должны быть реализованы подклассами. А конструкторы обязательно должны иметь тело, потому что они неявно вызываются, когда используется ключевое слово new для создания объекта. Абстрактный конструктор противоречил бы этому требованию — объект не может быть создан без выполнения кода конструктора.
Статические методы принадлежат самому классу, а не отдельным экземплярам объектов. Конструкторы служат другой цели: они инициализируют конкретные объекты при вызове ключевого слова new. Поскольку конструкторы всегда привязаны к созданию объектов, помечать их как static противоречит их основной роли. Кроме того, статические члены не могут обращаться к переменным экземпляра, которые конструкторам обычно нужно инициализировать.
final не нуженabstract недопустимstatic несовместимЭти ограничения гарантируют, что конструкторы правильно работают в объектно-ориентированной модели Java и сохраняют корректную семантику инициализации объектов.
Конструкторы не могут быть объявлены final, потому что ключевое слово final избыточно—конструкторы по своей природе уже не переопределяются, что делает модификатор бесполезным.
Новый — ещё не проверен сообществом
Вы