Ответ
Приватный конструктор запрещает создание экземпляров класса с помощью оператора new извне самого класса. Это ключевой приём для реализации определённых шаблонов проектирования и ограничений.
Основные случаи применения:
-
Утилитарные (Utility) классы: Классы, содержащие только статические методы. Создание их экземпляров бессмысленно.
public final class MathUtils { private MathUtils() { throw new AssertionError("Utility class, cannot be instantiated"); } public static int add(int a, int b) { return a + b; } } -
Singleton (Одиночка): Гарантирует существование только одного экземпляра класса.
public class DatabaseConnection { private static final DatabaseConnection INSTANCE = new DatabaseConnection(); private DatabaseConnection() { /* инициализация */ } public static DatabaseConnection getInstance() { return INSTANCE; } } -
Классы, инстанциируемые через фабричные методы: Когда логика создания объекта сложна или должна возвращать разные подтипы.
public class ComplexObject { private ComplexObject() {} public static ComplexObject createFromConfig(Config c) { // сложная логика инициализации return new ComplexObject(); } } -
Запрет наследования: Если все конструкторы приватны, класс не может быть унаследован (если только это не вложенный класс).