In questo post vedremo come utilizzare la keywordstatic per poter definire variabili e metodi come appartenenti ad una classe piuttosto che alla singo
In questo post vedremo come utilizzare la keywordstatic per poter definire variabili e metodi come appartenenti ad una classe piuttosto che alla singola istanza di una classe (ad un oggetto per intenderci).
Di solito una variabile può essere accessibile solo se in combinazione con un oggetto della sua classe. Tuttavia, è possibile creare un elemento che può essere usato solo tramite il nome della classe, senza riferimento ad una istanza specifica. Per creare un tale membro, si fa precedere la sua dichiarazione con la parola chiave static. Quando un membro è dichiarata static, si può accedere anche se non ci sono oggetti della sua classe, e senza alcun riferimento a qualsiasi oggetto, tale membro è detto anche variabile di classe.
Per poter accedere ad una variabile static si utilizza il nome della classe seguito dal nome della variabile:
nomeclasse.nomevariabile
È possibile dichiarare sia i metodi che le variabili in modo che siano membri static. L’esempio più comune di membro static è il metodo main(). main () è dichiarato come static perché deve essere chiamato prima che un qualsiasi oggetto esista. Similmente ad una variabile il metodo dichiarato static può essere invocato in questo modo:
nomeclasse.nomemetodo
Un tipico esempio di utilizzo di una variabile static è quando si vuole associare un identificativo univoco (serial number ad esempio) ad un dato oggetto della stessa classe (partendo da 1 per il primo oggetto). Questo ID sarà una variabile dell’istanza ma abbiamo bisogno di un’altra variabile che tenga traccia degli incrementi, tale variabile sarà un membro static:
public class Automobile{ private int id; private static int incremento=0; private int numeroPorte; ... public Automobile (int numeroPorte,...){ this.numeroPorte=numeroPorte; ... //assegna un id univoco incrementando la variabile di classe (utilizzo l'operatore di pre-incremento "++" ) id=++incremento; } public int getId(){ return this.id; } public stati int getIncremento(){ return this.incremento; } }
Oltre a dichiarare variabili e metodi come static è possibile dichiarare dei blocchi di tipo static i quali verranno chiamati una sola volta quando la classe viene caricata.
Vediamo come dichiarare un blocco static:
public class Automobile{ private int id; private static int incremento=0; private int numeroPorte; ... public Automobile (int numeroPorte,...){ this.numeroPorte=numeroPorte; ... //assegna un id univoco incrementando la variabile di classe dopo l'assegnamento (post-incremento) id=incremento++; } public int getId(){ return this.id; } public stati int getIncremento(){ return this.incremento; } static{ incremento=1; } }
COMMENTS
Procedimento molto utile e ottima spiegazione
Processo molto interessante, grazie delle informazioni