Static
Un componente (variabile, membro o classe) statico è un componente condiviso da tutte le istanze della classe. Può inoltre essere utilizzato anche senza istanziare la classe.
La keyword static può essere applicata a variabili, metodi, classi e blocchi di codice.
Variabile Statica
Una variabile statica, essendo condivisa da tutte le istanze della classe, è una variabile globale comune a tutti gli oggetti di quella classe.
Di conseguenza, se un’istanza modifica una variabile statica, questa modifica sarà visibile da tutte le altre istanze dello stesso tipo.
Esempio
public class Prova { static int count; public static void main(String[] args) { Prova p = new Prova(); p.count = 30; Prova p1 = new Prova(); p1.count = 40; System.out.println(p.count); Prova.count = 50; // notare che count vale per tutte le istanze l’ultimo valo-re assegnato ossia 50
Metodi Statici
Un metodo statico è un metodo legato alla classe, non all’istanza. Viene usato quando si ha necessita di creare una operazione che non usa dati specifici di una istanza
Esempio:
public class Prova { static public void hello() { } public static void main(String[] args) { Prova p = new Prova(); Prova.hello(); } }
Classe Interna Statica
Una classe interna è una classe, definita all’interno di un’altra classe, la cui dichiarazione è preceduta dalla parola chiave static.
Esempio
public class Prova { static class Pippo{ } public static void main(String[] args) { Pippo p = new Prova.Pippo();//Notare la sintassi con cui viene creato un oggetto di una classe interna statica: } }
Una classe interna statica non può accedere ai dati non statici della classe che la contiene.
Blocco di Codice Statico
E’un blocco di codice, tra parentesi graffe, preceduto dalla keyword static che può essere inserito al di fuori del corpo di un metodo, ovviamente sempre all’interno della classe:
Esempio
public class Prova { static { System.out.println("ciaoo"); System.out.println("hello"); } }
All’interno di questi blocchi è possibile utilizzare solo variabili o metodi statici. Una classe può avere un numero qualsiasi di questi blocchi.
Video Lezione su Static