Vad är en standardkonstruktör?

En standardkonstruktor är en specialiserad metod som skapar och initierar ett objekt i objektorienterad programmering. Det finns flera typer av konstruktörer, men en standardkonstruktor måste uppfylla ett av två specifika kriterier, förutom att skapa och initiera ett objekt. Den måste antingen inte ha några parametrar, i vilket fall den också kan kallas en nullär konstruktor, eller så måste den tilldela standardvärden till alla parametrar som den har möjlighet att ställa in. Vissa datorspråk anger implicit en standard nullär konstruktor om programmeraren inte anger en konstruktor alls. När någon typ av konstruktör har skrivits, anges inte längre den förinställda nullära konstruktorn, och måste uttryckligen skrivas om det behövs.

För datorspråk som tillåter objektorienterat arv måste standardkonstruktörer i underklasser vara exakt kopplade till konstruktorer i superklasser. Underklasskonstruktörer måste alltid anropa superklasskonstruktörer innan de gör något specifikt för underklassen. I vissa språk, som Java®, anropar en underklasskonstruktor implicit en standard nullär konstruktor för superklass. Om en standard nullär konstruktor för superklass inte existerar, kan underklassobjektet inte byggas korrekt. Underklasser kan fortfarande ha båda typerna av standardkonstruktorer i det här fallet, men en tillgänglig superklasskonstruktor måste anropas korrekt, kanske genom att skicka standardvärden som är unika för underklassen.

Den implicita genereringen av en standard nullär konstruktor har fördelen av att minska antalet metoder som en programmerare måste specificera och dokumentera, men har också nackdelen att eventuellt försvåra kodunderhåll och förståelse. Vissa programmerare anser att utelämnandet av en standardkonstruktor är dålig praxis, medan andra inte gör det. Det finns inget som hindrar en enskild programmerare från att följa någon av dessa programmeringsmetoder, så att inkludera en standard nullär konstruktor i koden är till stor del ett stilistiskt val från programmerarens sida. Om konstruktören ingår, dikterar de flesta skolor att den ska kommenteras och dokumenteras precis som vilken annan konstruktör eller metod som helst.

Alla standardkonstruktorer kan ha åtkomstmodifierare kopplade till sig, vilket gör konstruktorn offentlig, skyddad eller privat. Detta ger konstruktören specifika förmågor baserat på den klass i vilken den är specificerad. En offentlig standardkonstruktor kan användas för att skapa ett nytt objekt från en annan klass, medan en skyddad konstruktor endast kan anropas från sin egen klass och eventuella underklasser. Skyddade standardkonstruktorer ses ofta i en arvshierarki. Privata konstruktörer används vanligtvis endast i fristående klasser, där någon typ av fabriksmetod är tillgänglig att kalla den, snarare än programmeraren.