KONSTRUKTORI

Dr Nenad Jovanovid FTN, 2010. godina
________________________ © N. Jovanovid, 2010. 1

Konstruktori
 Inicijalna vrednost polja se može navesti u deklaraciji  Ponekad je potrebna netrivijalna operacija kreiranja početnog stanja objekta  Konstruktori – operacije za inicijalizaciju objekata
• Imaju isto ime kao klasa koju inicijalizuju • Nula ili više parametara (kao metode) • Nemaju povratnu vrednost (za razliku od metoda)

 Konstruktori se izvršavaju nakon što se:
• poljima pridruže njihove podrazumevane vrednosti • izvrše eksplicitni inicijalizatori

________________________ © N. Jovanovid, 2010.

2

3 . Jovanovid.________________________ © N. 2010.

4 .Osoba laza = new Osoba(). // osobaID = 2 Osoba mika = new Osoba(). // osobaID = 1 Osoba pera = new Osoba(). 2010. Jovanovid. // osobaID = 3 ________________________ © N.

Konstruktor sa argumentima  Konstruktor može da ima i argumente  Argumenti konstruktora obezbeđuju parametre za inicijalizaciju  Ako u klasi nije definisan ni jedan konstruktor. prevodilac de automatski da napravi podrazumevani konstruktor  Podrazumevani konstruktor nema argumente ________________________ © N. 2010. 5 . Jovanovid.

________________________ © N. 6 . Jovanovid. 2010.

Ova pojava se naziva preklapanje metoda (overloaded)  Pri pozivu metode. kompajler upoređuje broj i tip argumenata da bi pronašao odgovarajudu metodu  Preklapanje metode je neophodno kada klasa ima više konstruktora ________________________ © N. 7 .Preklapanje metode  U okviru jedne klase više metoda mogu da imaju isto ime ako imaju različit broj ili tipove argumenata. Jovanovid. 2010.

Jovanovid. 2010. 8 .________________________ © N.

________________________ © N. 9 . 2010. Jovanovid.

nikako iz neke druge metode.this u konstruktoru  Kada se iz konstruktora poziva drugi konstruktor. to se može uraditi pomodu rezervisane reči this. 10 . i ta naredba mora biti prva.  Pomodu rezervisane reči this može se pozvati samo jedan konstruktor. sa odgovarajudom listom argumenata. Jovanovid.  Konstruktor se može pozvati samo iz drugog konstruktora. 2010. ________________________ © N.

Jovanovid. 2010. 11 .________________________ © N.

 Za dealokaciju memorije zadužen je poseban pozadinski proces programa koji se naziva garbage collector (sakupljač "smeća") ________________________ © N. 2010. 12 . Jovanovid.garbage collector  Java ne poseduje posebnu jezičku konstrukciju kojom se memorija dealocira.

13 . 2010. Prostor se oslobađa samo ako: • je potrebno još prostora • sakupljač smeda želi da izbegne situaciju out of memory  Smede se skuplja bez akcija programera ali sakupljanje smeda uzima vreme  Treba projektovati sisteme koji nisu previše produktivni u kreiranju objekata  Sakupljač smeda ne garantuje da de memorija uvek biti raspoloživa za sve nove objekte  Java rešava problem visedih referenci i curenja memorije ________________________ © N. Jovanovid.

brojač se smanjuje za jedan  Povremeno sakupljač smeda pretražuje listu objekata i briše objekte za koje su brojači jednaki nuli ________________________ © N. Jovanovid.  Kada referenca izađe iz oblasti važnosti. 14 . brojač se uveda za jedan.Kako radi  Sakupljač smeda radi na principu brojanja referenci.  Svaki objekat ima brojač referenci i uvek kada se objektu pridruži nova referenca. 2010.

} ________________________ © N. Jovanovid.Inicijalizacija članova klase  Promenljivu ili objekat možemo da inicijalizujemo direktno.45654. float f = 5. 15 . u trenutku kada je definišemo u klasi Class Vrednost{ int i = 1.25f. double d = 3. 2010.

} } ________________________ © N. double d. float f.Inicijalizacija konstruktorima  Korišdenje konstruktora za inicijalizaciju članova daje vedu fleksibilnost u programiranju Class Vrednost{ int i. 2010. Jovanovid. Vrednost(){ int i = 1. double d = 3.25f.45654. float f = 5. 16 .

17 .Inicijalizacija statičkih članova  Za statičke članove klase postoji jednstveno skladište u kome se čuva vrednost statičkog elementa. Jovanovid. 2010. bez obzira koliko je objekata napravljeno  Kada se inicijalizuje to statičko skladište? ________________________ © N.

Jovanovid.Inicijalizacija statičkih članova ________________________ © N. 18 . 2010.

Jovanovid. 19 .Inicijalizacija statičkih članova ________________________ © N. 2010.

Jovanovid.  Klasa Tacna pravi nestatičan objekat klase Kafa pre statičnih ________________________ © N. 20 . 2010.Inicijalizacija statičkih članova  Klasa Kafa omogudava pradenje pravljenja objekata.  Klase Solja i Tacna na više mesta prave statičke elemente klase Kafa.

21 .Inicijalizacija statičkih članova ________________________ © N. 2010. Jovanovid.

22 .  Ako se ne napravi objekat klase Solja satatički objekti klase Kafa k1 i k2 nikada nede biti napravljeni  Zaključci: • Statični elementi se inicijalizuju samo kada se pravi prvi objekat klase i nakon toga se više ne inicijalizuju • Prvo se inicijalizuju statični elementi. Jovanovid. a zatim nestatični ________________________ © N.Inicijalizacija statičkih članova  Primer pokazuje da se inicijalizacija statičnih elemenata javlja samo ako je neophodna. 2010.

Sign up to vote on this title
UsefulNot useful