Il risultato dell’utilizzo della keyword static varia in base al tipo di elemento su cui la si sta applicando:

Classe Statica

Non è possibile definire staticuna classe standard, ma è possibile utilizzare il modificatore static su una classe dichiarata dentro un altra classe.

Infatti le classi interne sono chiamate in due modi specifici:

  • Inner Class: classe interna non statica
  • Nested Class: classe interna statica

Le differenza sono che:

Un inner class (non statica):

  • non può essere istanziata senza creare un istanza della sua classe esterna
  • ha acceso ai membri (campi e metodi) della classe esterna.

Una nested class (statica):

  • può essere istanziata senza istanziare la sua classe esterna
  • ha acceso soltanto ai membri statici della esterna

Metodo Statico

I metodi statici appartengono alla classe e non ad una istanza specifica della classe, questo implica che:

  • possono essere invocati anche utilizzando il nome della classe e non si un istanza
  • possono chiamare ed utilizzare soltanto metodi e campi statici

Campo Statico

I campi statici appartengono alla classe e non ad una istanza specifica della classe, questo implica che:

  • sono accessibili anche attraverso il nome della classe e non solo attraverso un istanza
  • esiste una sola allocazione del dato che è condivisa tra tutte le istanza