Što je zadani konstruktor?

Zadani konstruktor je specijalizirana metoda koja stvara i inicijalizira objekt u objektno orijentiranom programiranju. Postoji više vrsta konstruktora, ali zadani konstruktor mora zadovoljiti jedan od dva specifična kriterija, osim stvaranja i inicijalizacije objekta. Ne smije imati nikakvih parametara, u tom slučaju se može nazvati i nularnim konstruktorom, ili mora dodijeliti zadane vrijednosti svim parametrima koje ima mogućnost postaviti. Neki računalni jezici implicitno specificiraju zadani nularni konstruktor ako programer uopće ne specificira konstruktor. Nakon što je bilo koja vrsta konstruktora napisana, zadani nularni konstruktor više nije specificiran i mora biti eksplicitno napisan ako je potrebno.

Za računalne jezike koji dopuštaju objektno orijentirano nasljeđivanje, zadani konstruktori u podklasama moraju biti precizno povezani s konstruktorima u nadklasama. Konstruktori podklase uvijek moraju pozvati konstruktore nadklase prije nego što učine nešto specifično za podklasu. U nekim jezicima, kao što je Java®, konstruktor podklase implicitno poziva zadani nullarni konstruktor superklase. Ako ne postoji zadani nullarni konstruktor superklase, objekt podklase se ne može pravilno izgraditi. Podklase i dalje mogu imati bilo koju vrstu zadanog konstruktora u ovom slučaju, ali dostupni konstruktor superklase mora se pozvati ispravno, možda prosljeđivanjem zadanih vrijednosti jedinstvenih za podklasu.

Implicitno generiranje zadanog nularnog konstruktora ima prednost smanjenja broja metoda koje programer mora specificirati i dokumentirati, ali također ima i nedostatak što može otežati održavanje i razumijevanje koda. Neki programeri smatraju izostavljanje zadanog konstruktora lošom praksom, dok drugi to ne čine. Ne postoji ništa što sprječava pojedinog programera da se pridržava bilo koje od ovih metoda programiranja, tako da je uključivanje zadanog nularnog konstruktora u kodu uglavnom stilski izbor programera. Ako je uključen konstruktor, većina škola mišljenja nalaže da ga treba komentirati i dokumentirati baš kao i svaki drugi konstruktor ili metoda.

Svaki zadani konstruktor može imati pridružene modifikatore pristupa, čineći konstruktor javnim, zaštićenim ili privatnim. To daje konstruktoru specifične sposobnosti na temelju klase u kojoj je specificiran. Javni zadani konstruktor može se koristiti za stvaranje novog objekta iz druge klase, dok se zaštićeni konstruktor može pozvati samo iz njegove vlastite klase i bilo koje podklase. Zaštićeni zadani konstruktori često se vide u hijerarhiji nasljeđivanja. Privatni konstruktori se obično koriste samo u samostalnim klasama, gdje je neka vrsta tvorničke metode dostupna za pozivanje, a ne programer.