Constructori

Constructorul este o procedură specială, prin care se construiesc obiecte dintr-o anumită clasă. Constructorul are întotdeauna același nume cu clasa. În schimb, o clasă poate avea mai mulți constructori, care pot să difere între ei prin numărul și/sau tipul argumentelor. Constructorul alocă în memoria dinamică spațiul necesar pentru un obiect din clasa căreia îi aparține și inițializează câmpurile acestui obiect cu valori care depind de argumentele sale.

Crearea obiectelor prin operatorul new

Invocarea unui constructor se face prin operatorul new, urmat de numele constructorului respectiv și de lista de argumente a acestuia. Operatorul new este unar, iar operandul lui este un constructor, deci forma generala a expresiei de invocare a unui constructor este
    new nume_constructor(parametri_efectivi)
Valoarea acestei expresii este o referință la obiectul nou construit.
 
Efectul lateral al acestei expresii este construirea în memorie a unui obiect din clasa căreia îi aparține constructorul, iar valoarea acestei expresii este referința la obiectul nou construit.

De exemplu, expresia 
    new String("acesta este un sir")
are ca efect (lateral) construirea în memorie a șirului de caractere "acesta este un sir", iar valoarea expresiei este referința către acest șir. Să considerăm acum următoarele două instrucțiuni:
    String s1=new String("abcd_1234"), s2;
    s2=new String("alpha");
Prima dintre ele este o declarație, prin care se specifică faptul că s1 și s2 sunt variabile referință, ale căror valori sunt referințe la obiecte din clasa String. Totodată, se alocă în memorie șirul "abcd_1234" și se atribuie ca valoare inițială  a variabilei s1 referința la acest șir.
A doua dintre instrucțiunile de mai sus, este o instrucțiune de atribuire, în care variabilei s2 i se atribuie valoarea expresiei new String("alpha"). La executarea acestei expresii, se obține ca efect lateral alocarea în memorie a șirului "alpha", iar referința la acest șir se atribuie ca valoare a variabilei s2.



© Copyright 2000 - Severin BUMBARU, Universitatea "Dunărea de Jos" din Galați