  |
Le variabili di una classe si chiamano campi |
Entriamo adesso un pò in dettaglio su queste istanze.
Abbiamo detto che le variabili che vengono messe al di fuori
di un metodo ma dentro una classe si chiamano campi.
  |
I campi sono sempre: |
  |
tipi primitivi |
  |
riferimenti ad altri oggetti |
I campi sono come le altre variabili, e come tali hanno un tipo.
Le variabili in Java possono contenere tipi primitivi (nel qual caso
creata la variabile viene creato anche lo spazio in memoria per contenerlo)
e tipi oggetti (nel qual caso viene creata solo la variabile e nitente alltro).
  |
Non si può contenere un altro oggetto con un campo |
  |
Si deve ricorrere all'ereditarietà. |
Notare che se una classe contiene un campo di un'altra classe, questo
non significa che adesso la classe ne contiene i campi: invece
contiene una "scatola" che a sua volta contiene un'altra
scatola. Usando l'ereditarietà di riesce invece a creare una nuova
claase che ha nuovi campi e mantiene i vecchi. E non ci sono "scatole"
(ovvero oggetti) a frapporsi.

  |
Allocazione di una istanza new Stack() |
Quando alloco una nuova istanza, senza specificare altro, succede questo:
Quando alloco una nuova istanza, senza specificare altro, succede questo:
  |
crea i campi tipi primitivi |
Vengono innanzitutto creati tutti i campi primitivi. In particolare
lo spazio per contenere le variabili c'è ed è inizializzato a zero.
  |
crea i riferimenti nulli ai sotto oggetti |
Invece i campi di tipo oggetto vengono si inizializzati, ma al valore nullo.
Infatti una variabile di tipo oggetto può eventualmente non contenere nulla.
Ed è quello che sicuramente succede se nessuno dà maggiori informazini.
Stack s= new Stack () ;
Creando uno stack senza ulteriori ottimizzazione, si ottiene quello che è
visibile in figura.
|