Sobes.tech
Senior

Van-e konstruktor az absztrakt osztályban?

sobes.tech MI

Válasz az MI-től

Igen, egy absztrakt osztálynak lehet konstruktorja. Egy absztrakt osztály olyan osztály, amely nem szándékozik közvetlen példányokat létrehozni, de tartalmazhat megvalósítást, beleértve a konstruktort is.

Az absztrakt osztály konstruktorát általában arra használják, hogy közös mezőket inicializáljanak vagy közös logikát hajtsanak végre, amelyet az alosztályok örökölnek.

Példa C++-ban:

class AbstractBase {
public:
    AbstractBase(int value) : data(value) {}
    virtual void doSomething() = 0; // tiszta virtuális függvény
protected:
    int data;
};

class Derived : public AbstractBase {
public:
    Derived(int value) : AbstractBase(value) {}
    void doSomething() override {
        // implementáció
    }
};

Itt az AbstractBase konstruktorát a származtatott osztály konstruktorából hívják, hogy inicializálják a data mezőt. Ezért a konstruktor megléte egy absztrakt osztályban normális gyakorlat.