Sobes.tech
Назад к вопросам
Senior
12

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

Компании, где спрашивали
ИП Ганус Александр Андреевич

Ответ от нейросети

sobes.tech AI

Да, в абстрактном классе может быть конструктор. Абстрактный класс — это класс, который не предназначен для создания экземпляров напрямую, но может содержать реализацию, включая конструктор.

Конструктор абстрактного класса обычно используется для инициализации общих полей или выполнения общей логики, которая будет унаследована подклассами.

Пример на C++:

class AbstractBase {
public:
    AbstractBase(int value) : data(value) {}
    virtual void doSomething() = 0; // чисто виртуальная функция
protected:
    int data;
};

class Derived : public AbstractBase {
public:
    Derived(int value) : AbstractBase(value) {}
    void doSomething() override {
        // реализация
    }
};

Здесь конструктор AbstractBase вызывается из конструктора производного класса для инициализации поля data. Таким образом, наличие конструктора в абстрактном классе — нормальная практика.