Мы помечаем класс как конечный класс, делая конструктор частным, чтобы избежать подкласса.
Это хорошая практика, когда мы не хотим, чтобы люди переопределяли наши методы класса и изменяли функциональность или добавляли функции в наш класс.
Например, классы String и Math являются конечными классами, которые мы не можем ни расширять, ни делить на подклассы, это делается для того, чтобы никто не изменил свое поведение.