Che cos'è un costruttore predefinito?
Un costruttore predefinito è un metodo specializzato che crea e inizializza un oggetto nella programmazione orientata agli oggetti. Esistono diversi tipi di costruttori, ma un costruttore predefinito deve soddisfare uno di due criteri specifici, oltre a creare e inizializzare un oggetto. Non deve avere parametri, nel qual caso può anche essere chiamato un costruttore nullo, oppure deve assegnare valori predefiniti a tutti i parametri che ha la possibilità di impostare. Alcuni linguaggi informatici implicitamente specificano un costruttore nullary predefinito se il programmatore non specifica affatto un costruttore. Una volta scritto qualsiasi tipo di costruttore, il costruttore nullary predefinito non viene più specificato e, se necessario, deve essere esplicitamente scritto.
Per i linguaggi che consentono l'ereditarietà orientata agli oggetti, i costruttori predefiniti nelle sottoclassi devono essere collegati in modo preciso ai costruttori nelle superclassi. I costruttori di sottoclassi devono sempre chiamare costruttori di superclassi prima di eseguire qualsiasi operazione specifica per la sottoclasse. In alcuni linguaggi, come Java®, un costruttore di sottoclassi chiama implicitamente un costruttore nullo predefinito di superclasse. Se non esiste un costruttore nullary predefinito della superclasse, l'oggetto della sottoclasse non può essere creato correttamente. Le sottoclassi possono comunque avere entrambi i tipi di costruttore predefinito in questo caso, ma un costruttore di superclasse disponibile deve essere chiamato correttamente, magari passandogli i valori predefiniti univoci alla sottoclasse.
La generazione implicita di un costruttore nullary predefinito ha il vantaggio di ridurre il numero di metodi che un programmatore deve specificare e documentare, ma ha anche lo svantaggio di rendere più difficile la manutenzione e la comprensione del codice. Alcuni programmatori considerano l'omissione di un costruttore predefinito una cattiva pratica, mentre altri no. Non c'è nulla che impedisca a un singolo programmatore di aderire a uno di questi metodi di programmazione, quindi includere un costruttore nullo predefinito nel codice è in gran parte una scelta stilistica da parte del programmatore. Se il costruttore è incluso, la maggior parte delle scuole di pensiero impone che dovrebbe essere commentato e documentato proprio come qualsiasi altro costruttore o metodo sarebbe.
Qualsiasi costruttore predefinito può avere modificatori di accesso collegati, rendendolo pubblico, protetto o privato. Ciò fornisce al costruttore abilità specifiche in base alla classe in cui è specificato. Un costruttore predefinito pubblico può essere utilizzato per creare un nuovo oggetto da un'altra classe, mentre un costruttore protetto può essere chiamato solo dalla propria classe e da eventuali sottoclassi. I costruttori predefiniti protetti vengono visualizzati spesso in una gerarchia di ereditarietà. I costruttori privati sono generalmente impiegati solo in classi autonome, dove è disponibile un tipo di metodo factory per chiamarlo, piuttosto che il programmatore.