ePrometeusCorsoJavaJava
testi articoli
Testi Articoli  Download
Home | Basi | Espressioni | Comandi | Classi | Ereditarieta | Eccezioni | Thread | Utilita | 
CorsoJava è ora Video! Free for all!
Clicca Qui!

Classi
OOP
Ereditarietà
Polimorfismo
Chiamata
Classi
Record
Istanze
Costruttori
Campi
this
Allocazione
Più costruttori
this()
Inizializzazioni
Riferimenti
Ordine
Metodi
Invocazione
Overloading
Attenzione
Finalizzazione
Static e Final
Campi statici
Blocco static
Metodi statici
Visibilità
Costanti
Package
import
import *
Classpath
L'interprete
Zip e Jar

<<< Campi statici >>>
I campi statici equivalgono alle variabili globali
class Stack {
    static int count =0;     
    int top=0; 
    int [] stack; 
    Stack() {
        ++count; 
        stack = new int[10];
    } 
}
c'è un solo count, condiviso tra tutti gli oggetti

Vediamo di capire il meccanismo dei campi statici con questo esempio: in questo caso abbiamo il classico stack. Supponiamo che per qualche motivo ci interessa sapere quanti stack sono stati creati. Occorre una variabile che li conti, ma questa variabile non può essere un campo normale perché ne esiste una copia diversa per ogni istanza. Si potrebbe pensare di metterla da qualche altra parte, e non della classe, ma siccome concettualmente appartiene alla classe, la soluzione migliore è quella di usare un campo statico. Il campo count, essendo static, diventa unico per tutte le istanze della classe. Al campo si accede allo stesso modo con cui si accede agli altri campi, ma la differenza è che esiste un unico campo condiviso tra tutte le istanze. In questo modo funziona il conteggio: ogni volta che viene creato una istanza, questa incrementa l'unica occorrenza condivisa del campo count.

basta il nome della classe per accedere ad un campo statico
System.out.println("hello");
out è campo statico di System

I campi statici hanno anche una ulteriore proprietà: possono essere utilizzati senza istanza. Infatti non vengono memorizzati nel corpo di una istanza, ma separatamente in uno spazio di memoria comune per tutti i campi statici della classe. Per accedere a un campo statico basta il nome della classe. Se ricordate come si fa a scrivere nel terminale, si utilizza System.out. Come si vede si sta utilizzando out, che è un campo statico, e per utilizzarlo basta il nome della classe a cui appartiene (System). È comunque possibile utilizzare una istanza per accedervi, ma viene comunque modificato l'unico campo statico condiviso.

ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com