Skip to main content

Cos'è un metodo statico?

Un metodo di programmazione del computer orientato agli oggetti che viene dichiarato in una classe ma non dipende da alcuna particolare istanza di quella classe è chiamato metodo statico.La maggior parte dei linguaggi di programmazione include la parola chiave statica 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 invece di riferirlo con il nome di un oggetto istanziato.In Java è consentito utilizzare i nomi degli oggetti per fare riferimento a questi metodi, ma è fortemente scoraggiato.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 sono spesso utilizzati in classi di utilità che non dipendono dalle variabili di istanza di una particolare classe.Sono anche utilizzati quando un programmatore deve accedere al metodo, ma non è necessario istanziare la classe in cui è contenuta. Le classi di utilità normalmente non sono istanziate in oggetti.Sarebbe insolito che un metodo di utilità abbia la necessità di modificare le informazioni degli oggetti.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 istanzae 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 normali.

Si verifica un importante svantaggio dei metodi statici durante l'eredità quando viene utilizzato il polimorfismo.Fintanto che il metodo statico genitore non viene dichiarato finale, lo stesso metodo statico figlio può essere codificato nella classe figlio come se fosse in superamento.Questo è tecnicamente chiamato nascondersi invece di sovrascrivere perché non è possibile ignorare un metodo statico.

Quando si utilizza il nascondiglio, se si accede il metodo statico genitore utilizzando il nome della classe, verrà utilizzato il metodo genitore.Se si accede al metodo statico figlio sovrascritto utilizzando il nome dell'oggetto, verrà utilizzato il metodo figlio sovrascritto.Il problema si verifica quando un oggetto figlio viene sollevato come genitore.In questo caso, una chiamata al metodo statico per figlio Upcast utilizzerà il metodo principale anziché il metodo figlio previsto.Con il vero polimorfismo, il metodo figlio sarebbe quello attivato dopo un upcast.