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

<<< Allocazione >>>

Proseguiamo il paragone con la programmazione strutturata. Come ricorderete a un certo punto ci siamo preoccupati di creare l'oggetto vero proprio. Abbiamo fatto questo usando l'operatore new seguito dal nome della classe, come nel seguente esempio:

Stack s = new Stack ();

Notare che non stiamo usando esattamente il nome della classe, ma un metodo che si chiama come la classe (mentre quando dichiariamo la variabile usiamo proprio il nome da classe).

In realtà fa due cose:
new alloca la memoria necessaria pari alla dimensione dell'oggetto
Stack è un costruttore chiamato da new dopo l'allocazione per inizializzare l'oggetto

Questa è una chiamata di un costruttore, che in realtà fa due cose distinte: alloca la memoria necessaria per contenere l'oggetto e poi chiama il corpo della costruttore per effettuare l'inzializzazione. Tutto questo in unica soluzione: io mi limito chiamare il costruttore e l'oggetto viene ritornato e allocato e inizializzato.

Se non specifico costruttori, viene definito automaticamente un "costruttore di default"

Possiamo usare questa sintassi anche quando in una classe non abbiamo definito alcun metodo. Infatti un costruttore viene automaticamente aggiunto ogni volta che non ce ne sono. Questo per consentire di inizializzare sempre una classe senza metodi (che come ricorderete è praticamente un record).

Stack() {}
il costruttore aggiunto non fa niente

questo costruttore è stato aggiunto non fa niente. Il suo scopo è quello di consentire la chiamata del costruttore, e quindi consentire l'allocazione della memoria. Infatti questo costruttore serve solamente per far allocare la memoria, e basta.

in realtà, chiama i costruttori della classe base, ma lo vedremo poi

A voler essere precisi questo costruttore fa molte cose oltre ad alloca nella memoria : in particolare non si vede ma chiama il costruttore della classe antenato. Per capire questo concetto dobbiamo però avere le conoscenze del meccanismo della ereditarietà, che è una cosa che vedremo più avanti nel corso.

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