Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Есть ли смысл делать конструктор приватным в абстрактном классе?

Хаку Ученик (32), закрыт 1 год назад
Нельзя создать объект абстрактного класса, а значит сам конструктор не имеет смысла делать приватным, ведь ты не сможешь его вызвать нигде?
Лучший ответ
Остальные ответы
SUPPORT Support Знаток (421) 1 год назад
Вы абсолютно правы. В контексте абстрактных классов в объектно-ориентированном программировании, смысла делать конструктор приватным в абстрактном классе нет. Фактически, конструкторы абстрактных классов обычно оставляются защищенными (protected) или даже публичными (public), поскольку они могут быть вызваны из конструкторов производных классов.

Абстрактные классы введены для того, чтобы предоставить интерфейс (в виде чисто виртуальных методов) для производных классов, указывая, что эти методы должны быть реализованы в производных классах. Однако конструкторы абстрактных классов также могут быть вызваны из конструкторов производных классов.

Важно также помнить, что абстрактные классы не могут быть инстанциированы напрямую (т.е., нельзя создать объект абстрактного класса), но они служат основой для производных классов, в которых реализуются абстрактные методы и используются конструкторы.

Таким образом, конструкторы в абстрактных классах обычно оставляются доступными для производных классов, чтобы те могли вызывать их при создании объектов производных классов.
Оракул Оракул (62122) 1 год назад
Конструкторы любых классов делать приватными имеет смысл только для singleton и enum (по сути тот же singleton). Когда вы сознательно запрещаете создавать объекты класса и создаете их изначальна в единственном экземпляре.
Похожие вопросы