Kas yra numatytasis konstruktorius?

Numatytasis konstruktorius yra specializuotas metodas, kuris sukuria ir inicijuoja objektą programuojant objektą. Yra kelių tipų konstruktoriai, tačiau numatytasis konstruktorius turi atitikti vieną iš dviejų konkrečių kriterijų, be objekto kūrimo ir inicijavimo. Jis turi arba neturėti parametrų, tokiu atveju jis taip pat gali būti vadinamas nuliniu konstruktoriumi, arba jis turi priskirti numatytąsias reikšmes visiems parametrams, kuriuos gali nustatyti. Kai kurios kompiuterių kalbos netiesiogiai nurodo numatytąjį nulinį konstruktorių, jei programuotojas iš viso nenurodo konstruktoriaus. Kai parašomas bet kokio tipo konstruktorius, numatytasis nulinis konstruktorius nebėra nurodytas ir, jei reikia, turi būti aiškiai parašytas.

Kompiuterių kalboms, kurios leidžia paveldėti objektą, numatytieji poklasių konstruktoriai turi būti tiksliai sujungti su superklasių konstruktoriais. Poklasių konstruktoriai visada turi iškviesti superklasių konstruktorius prieš darydami ką nors konkretaus poklasiui. Kai kuriose kalbose, pvz., Java®, poklasio konstruktorius netiesiogiai vadina superklasės numatytąjį nulinį konstruktorių. Jei superklasės numatytojo nulinio konstruktoriaus nėra, poklasio objektas negali būti tinkamai sukurtas. Šiuo atveju poklasiai vis tiek gali turėti bet kurio tipo numatytąjį konstruktorių, tačiau turimas superklasės konstruktorius turi būti iškviestas teisingai, galbūt perduodant jam numatytąsias reikšmes, unikalias poklasiui.

Netiesioginis numatytojo nulinio konstruktoriaus generavimas turi pranašumą, nes sumažina metodų, kuriuos programuotojas turi nurodyti ir dokumentuoti, skaičių, tačiau turi ir trūkumą, nes gali apsunkinti kodo priežiūrą ir suvokimą. Kai kurie programuotojai mano, kad numatytojo konstruktoriaus nepateikimas yra bloga praktika, o kiti – ne. Niekas netrukdo individualiam programuotojui laikytis kurio nors iš šių programavimo metodų, todėl numatytojo nulinio konstruktoriaus įtraukimas į kodą iš esmės yra stilistinis programuotojo pasirinkimas. Jei įtraukiamas konstruktorius, dauguma mąstymo mokyklų reikalauja, kad jis turėtų būti komentuojamas ir dokumentuojamas kaip ir bet kuris kitas konstruktorius ar metodas.

Prie bet kurio numatytojo konstruktoriaus gali būti pridėti prieigos modifikatoriai, todėl konstruktorius bus viešas, apsaugotas arba privatus. Tai suteikia konstruktoriui specifinių gebėjimų pagal klasę, kurioje jis nurodytas. Viešasis numatytasis konstruktorius gali būti naudojamas kuriant naują objektą iš kitos klasės, o apsaugotą konstruktorių galima iškviesti tik iš savo klasės ir bet kokių poklasių. Apsaugoti numatytieji konstruktoriai dažnai matomi paveldėjimo hierarchijoje. Privatūs konstruktoriai dažniausiai dirba tik savarankiškose klasėse, kur galima iškviesti tam tikrą gamyklos metodą, o ne programuotoją.