16/01/07 3:54
pierotofy
Postato originariamente da gabriel81mi:
A a = new A(); // oggetto di tipo A
B b = new B(); // oggetto di tipo B
C c = new C(); // oggetto di tipo C
A r; // ottiene un riferimento di tipo A
E' un esempio per mostrarti la differenza tra
oggetto e
istanza.
Quando crei un oggetto (usando l'operatore new come nell'esempio) la JVM si occupa di allocare la memoria necessaria a contenere tutti i dati dell'oggetto, di chiamare il costruttore della classe (e quindi di inizializzare le variabili) e di restituire un "puntatore" che viene assegnato alla variabile d'istanza.
Quando invece semplicemente dichiari un'istanza di un oggetto (quindi senza richiamare l'operatore new), crei solamente un "puntatore" di tipo X, quindi nessuna memoria viene allocata e nessun costruttore viene richiamato. In pratica:
A a = new A(); //Crea un oggetto di tipo A chiamato a
A b; //Crea un istanza di tipo A chiamata b
b = a; //L'istanza di b ora punta all'oggetto a e in quanto tale, può accedere a tutti i suoi membri