Senior
Ar abstrakčiojoje klasėje yra konstruktorius?
sobes.tech AI
Atsakymas iš AI
Taip, abstrakčioje klasėje gali būti konstruktorius. Abstrakti klasė yra klasė, kuri nėra skirta tiesiogiai kurti egzempliorius, tačiau gali turėti įgyvendinimą, įskaitant konstruktorių.
Abstrakčios klasės konstruktorius dažnai naudojamas bendrų laukų inicializavimui arba bendros logikos vykdymui, kuri bus paveldėta iš pogrupių.
Pavyzdys C++:
class AbstractBase {
public:
AbstractBase(int value) : data(value) {}
virtual void doSomething() = 0; // grynas virtualus metodas
protected:
int data;
};
class Derived : public AbstractBase {
public:
Derived(int value) : AbstractBase(value) {}
void doSomething() override {
// įgyvendinimas
}
};
Čia, AbstractBase konstruktorius yra iškviečiamas iš paveldėjusios klasės konstruktoriaus, norint inicializuoti lauką data. Todėl konstruktorio buvimas abstrakčioje klasėje yra įprasta praktika.