Mis on vaikekonstruktor?

Vaikekonstruktor on spetsiaalne meetod, mis loob ja lähtestab objekti objektorienteeritud programmeerimisel. Konstruktoreid on mitut tüüpi, kuid vaikekonstruktor peab lisaks objekti loomisele ja lähtestamisele vastama ühele kahest konkreetsest kriteeriumist. Sellel ei tohi olla parameetreid, sel juhul võib seda nimetada ka nullkonstruktoriks, või peab see määrama vaikeväärtused kõigile parameetritele, mida tal on võimalik määrata. Mõned arvutikeeled määravad vaikimisi nullkonstruktori, kui programmeerija konstruktorit üldse ei määra. Kui mis tahes tüüpi konstruktor on kirjutatud, ei määrata vaikimisi nullkonstruktorit ja see tuleb vajaduse korral selgesõnaliselt kirjutada.

Arvutikeelte puhul, mis võimaldavad objektorienteeritud pärimist, peavad alamklasside vaikekonstruktorid olema täpselt ühendatud ülemklasside konstruktoritega. Alamklassi konstruktorid peavad alati kutsuma superklassi konstruktoreid, enne kui midagi alamklassi spetsiifilist ette võtavad. Mõnes keeles, nagu Java®, kutsub alamklassi konstruktor vaikimisi ülemklassi nullkonstruktorit. Kui ülemklassi vaikimisi nullkonstruktorit pole, ei saa alamklassi objekti õigesti ehitada. Alamklassidel võib sel juhul siiski olla kumbagi tüüpi vaikekonstruktor, kuid saadaolevat ülemklassi konstruktorit tuleb kutsuda õigesti, võib-olla edastades sellele alamklassile ainulaadsed vaikeväärtused.

Vaikimisi nullkonstruktori kaudse genereerimise eeliseks on see, et see vähendab meetodite arvu, mida programmeerija peab määrama ja dokumenteerima, kuid selle puuduseks on ka see, et see võib muuta koodi hooldamise ja mõistmise keerulisemaks. Mõned programmeerijad peavad vaikekonstruktori väljajätmist halvaks tavaks, teised aga mitte. Miski ei takista üksikul programmeerijal kummagi neist programmeerimismeetoditest kinni pidamast, seega on vaikimisi nullkonstruktori lisamine koodi suuresti programmeerija stiililine valik. Kui konstrueerija on kaasatud, nõuavad enamik mõttekoolkondi, et seda tuleks kommenteerida ja dokumenteerida täpselt samamoodi nagu mis tahes muud konstruktorit või meetodit.

Igal vaikekonstruktoril võivad olla lisatud juurdepääsumuutused, mis muudavad konstruktori avalikuks, kaitstuks või privaatseks. See annab konstruktorile spetsiifilised võimed, mis põhinevad klassil, milles see on määratud. Avalikku vaikekonstruktorit saab kasutada uue objekti loomiseks teisest klassist, samas kui kaitstud konstruktorit saab kutsuda ainult tema enda klassist ja mis tahes alamklassidest. Kaitstud vaikekonstruktoreid nähakse sageli pärimishierarhias. Erakonstruktoreid kasutatakse tavaliselt ainult iseseisvates klassides, kus selle kutsumiseks on saadaval teatud tüüpi tehase meetod, mitte programmeerija.