Che cos'è un metodo statico?
Un metodo di programmazione per computer orientato agli oggetti dichiarato in una classe ma che non dipende da una particolare istanza di quella classe viene chiamato metodo statico. La maggior parte dei linguaggi di programmazione include la parola chiave static nella dichiarazione di un metodo per rendere statico un metodo. Questi metodi appartengono rigorosamente alla classe in cui sono contenuti e non a nessun oggetto istanziato da quella classe. Sono spesso indicati come metodi di classe .
Il nome letterale della classe viene normalmente utilizzato per accedere a un metodo statico anziché fare riferimento ad esso con il nome di un oggetto istanziato. In Java è consentito utilizzare nomi di oggetti per fare riferimento a questi metodi, ma è fortemente sconsigliato. Se viene utilizzato un nome oggetto, una persona che legge il codice può confondere uno di questi metodi con un metodo di istanza.
I metodi statici vengono spesso utilizzati nelle classi di utilità che non dipendono dalle variabili di istanza di una determinata classe. Vengono inoltre utilizzati quando un programmatore deve accedere al metodo ma non è necessario creare un'istanza della classe in cui è contenuto. Le classi di utilità normalmente non vengono istanziate in oggetti. Sarebbe insolito che un metodo di utilità abbia la necessità di modificare le informazioni sull'oggetto. Un metodo della classe java.lang.math, come pow (), sarebbe un esempio di come questo tipo di metodo verrebbe utilizzato in una classe di utilità.
I metodi di istanza possono accedere direttamente a variabili di istanza, variabili statiche, metodi di istanza e metodi statici. I metodi statici non possono accedere direttamente alle variabili di istanza e ai metodi di istanza. A causa della natura dei metodi di istanza che hanno un migliore accesso ai membri della classe rispetto ai metodi statici, i metodi di istanza sono il tipo di metodi normalmente utilizzati nelle classi regolari.
Uno dei principali svantaggi dei metodi statici si verifica durante l'ereditarietà quando viene utilizzato il polimorfismo. Fintanto che il metodo statico padre non è dichiarato finale, lo stesso metodo statico figlio può essere codificato nella classe figlio come se fosse sovrascritto. Questo è tecnicamente chiamato nascondere invece di ignorare perché un metodo statico non può essere ignorato.
Quando si utilizza il nascondiglio, se si accede al metodo statico padre utilizzando il nome della classe, verrà utilizzato il metodo padre. Se si accede al metodo statico secondario sovrascritto utilizzando il nome dell'oggetto, verrà utilizzato il metodo figlio sovrascritto. Il problema si verifica quando un oggetto figlio viene registrato come genitore. In questo caso, una chiamata al metodo statico figlio upcast utilizzerà il metodo genitore invece del metodo figlio previsto. Con il vero polimorfismo, il metodo figlio sarebbe quello attivato dopo un upcast.