Ce este un constructor implicit?

Un constructor implicit este o metodă specializată care creează și inițializează un obiect în programarea orientată pe obiecte. Există mai multe tipuri de constructori, dar un constructor implicit trebuie să îndeplinească unul dintre cele două criterii specifice, pe lângă crearea și inițializarea unui obiect. Trebuie fie să nu aibă parametri, caz în care ar putea fi numit și un constructor nular, fie trebuie să atribuie valori implicite tuturor parametrilor pe care îi poate seta. Unele limbaje de calculator specifică implicit un constructor nular implicit dacă programatorul nu specifică deloc un constructor. Odată ce orice tip de constructor este scris, constructorul nular implicit nu mai este specificat și trebuie scris în mod explicit dacă este necesar.

Pentru limbaje de calculator care permit moștenirea orientată pe obiecte, constructorii impliciti din subclase trebuie să fie conectați precis la constructorii din superclase. Constructorii de subclase trebuie să apeleze întotdeauna constructorii de superclase înainte de a face ceva specific subclasei. În unele limbi, cum ar fi Java®, un constructor de subclasă apelează implicit un constructor nular implicit de superclasă. Dacă nu există un constructor nular implicit de superclasă, obiectul subclasă nu poate fi construit corect. Subclasele pot avea în continuare oricare dintre tipurile de constructor implicit în acest caz, dar un constructor de superclasă disponibil trebuie apelat corect, poate prin transmiterea valorilor implicite unice subclasei.

Generarea implicită a unui constructor nular implicit are avantajul de a reduce numărul de metode pe care un programator trebuie să le specifice și să documenteze, dar are și dezavantajul de a îngreuna eventual întreținerea și înțelegerea codului. Unii programatori consideră că omiterea unui constructor implicit este o practică proastă, în timp ce alții nu. Nu există nimic care să împiedice un programator individual să adere la oricare dintre aceste metode de programare, așa că includerea unui constructor nular implicit în cod este în mare măsură o alegere stilistică din partea programatorului. Dacă constructorul este inclus, majoritatea școlilor de gândire dictează că ar trebui să fie comentat și documentat la fel ca orice alt constructor sau metodă.

Orice constructor implicit poate avea modificatori de acces atașați, făcând constructorul public, protejat sau privat. Acest lucru oferă constructorului abilități specifice bazate pe clasa în care este specificat. Un constructor public implicit poate fi folosit pentru a crea un obiect nou dintr-o altă clasă, în timp ce un constructor protejat poate fi apelat numai din propria sa clasă și din orice subclasă. Constructorii impliciti protejați sunt văzuți adesea într-o ierarhie de moștenire. Constructorii privați sunt de obicei angajați numai în clase autonome, unde este disponibil un tip de metodă din fabrică pentru a o apela, mai degrabă decât programatorul.