În ierarhia de clasă, este permis ca clasele de bază și cele derivate să aibă constructori proprii. În acest sens, apare următoarea întrebare rezonabilă: care designer este responsabil pentru construirea obiectului clasei derivate: constructorul clasei de bază, constructorul clasei derivate sau ambele? Această întrebare poate fi răspunsă astfel: constructorul clasei de bază construiește partea de bază a obiectului, iar constructorul clasei derivate este partea derivată a acestui obiect. Și aceasta are propria sa logică, deoarece clasa de bază nu cunoaște și nu poate accesa niciun element al clasei derivate, ceea ce înseamnă că proiectarea lor trebuie să aibă loc separat.
Dacă constructorul este definit numai în clasa derivată, atunci totul se întâmplă foarte simplu: obiectul clasei derivate este construit și partea de bază a obiectului este compilată automat de constructorul său implicit.
Când constructorii sunt definiți atât în clasa de bază, cât și în clasa derivată, procesul de construire a unui obiect este oarecum mai complicat, deoarece ambii constructori de clasă trebuie să fie executați. În acest caz, trebuie să vă referiți la baza de cuvinte cheie. care găsește o aplicație duală: în primul rând, de a apela constructorul clasei de bază; și în al doilea rând, să acceseze un membru al clasei de bază care se ascunde în spatele membrului clasei derivate.
unde lista de argumente indică argumentele cerute de constructorul din clasa de bază. Observați locația colonului.
Să examinăm un exemplu:
Cu cuvântul cheie de bază, puteți apela constructorul oricărei forme definite în clasa de bază și va fi executat numai constructorul al cărui parametru corespunde cu argumentele transmise.
Și acum, să aruncăm o privire asupra principiilor de bază ale funcționării bazei de cuvinte cheie. Atunci când cuvântul cheie de bază este specificat în clasa derivată, constructorul este chemat din clasa de bază imediată. Prin urmare, baza de cuvinte cheie se referă întotdeauna la clasa de bază care se află în ierarhia directă deasupra clasei de apeluri. Acest lucru este valabil chiar și pentru o ierarhie de clase pe mai multe niveluri. Argumentele sunt transmise constructorului de bază ca argumente pentru metoda base (). Dacă lipsește cuvântul cheie, constructorul folosit în clasa de bază implicită este automat apelat.