Senior
Има ли конструктор в абстрактен клас?
sobes.tech AI
Отговор от 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. Следователно, наличието на конструктор в абстрактен клас е нормална практика.