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

<<< Invocazione >>>

Esaminiamo il meccanismo complessivo con cui i metodi vengono invocati, e come si fa a eseguire i metodi sui campi di una istanza, tenendo separati i campi di istanze diverse.

I metodi:
possono essere richiamati solo avendo un oggetto (una istanza di una classe)
questa viene costruita invocando un costruttore

Il meccanismo di uso di un oggetto prevede che non si possa chiamare un metodo da solo: si deve necessariamente fare riferimento ad esso sfruttando una istanza di un oggetto. Per ottenere una istanza di un oggetto che non si ha si può invocare in qualunque momento un costruttore. Solo dopo aver costruito l'oggetto si possono invocare SU DI ESSO i metodi. Esempio:

Stack s = new Stack()
s.push(4);
Stack t = new Stack();
t.push(5);

Questo è il completo ciclo di vita di un oggetto: nasce, ovvero viene costruito. Dopo di che viene assegnato ad una variabile grazie alla quale si possono invocare i metodi. Se voglio posso creare più istanze e invocare i metodi separatamente. Se vi ricordate, due istanze hanno i campi distinti perchè vengono memorizzati in zone di memoria diverse. Il costruttore usa il this per sapere in quale zona di memoria si deve agire per inizializzare l'oggetto.

Nei metodi, i riferimenti ai campi hanno sempre un this implicito
void push(int x) {
  stack[top++]=x;
}
equivale a:
void push(int x) { 
    this.stack[this.top++]=x;
}

Un meccanismo pressochè identico esiste per i metodi. Mentre per i costruttori il this viene passato dal new, che alloca prima la memoria, per i metodi l'oggetto corrente viene assegnato a this è quello che viene usato per chiamare il metodo. È come se this fosse un parametro in più, invisibile, passato però sempre alla chiamata del metodo. Ecco perchè i due stack sono distinti e il push del primo non incide sul push del secondo: perchè vengono usati i campi di due istanze distinte, passate diverse in momenti diversi grazie al this. Tutte le "variabili libere" vengono cercate nell'oggetto corrente grazie ad un this prefisso implicito di ogni chiamata. Consigliamo di verificare la comprensione di questo meccanismo accuratamente perchè è assolutamente fondamentale.

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