Costruttori ed Inizializzazione

annuncio pubblicitario
CdL Ingegneria Elettronica, Telecomunicazioni
ed Automazione
Fondamenti di Informatica LB
A.A. 2007-08
25/02/2008
Alessandra Toninelli
[email protected]
Definire una classe Java
 Una classe contiene solo due categorie di elementi
1.
2.
Variabili di classe o di istanza (fields o campi)
Metodi (il costruttore è un metodo speciale)

Tutto il codice che scriviamo deve appartenere ad
una di queste due categorie

Java è un linguaggio OO – non procedurale!
25/02/2008
Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08
2
Il costruttore
 E’ possibile definire più costruttori per una stessa
classe (overriding del metodo)
 E’ possibile chiamare un costruttore della stessa classe
dentro un altro costruttore

this.costruttore();
 Ma deve essere la prima istruzione
 E’ possibile chiamare il costruttore della superclasse

25/02/2008
super();
Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08
3
Inizializzazione dei campi
 Dove si inizializzano i campi di una classe?
 Due possibili alternative:
1. Nella dichiarazione del campo (ma in una sola
istruzione!)
2. All’interno di un metodo (tipicamente il costruttore)

Java fornisce una inizializzazione di default

25/02/2008
Ad es. un boolean è false, un nuovo oggetto è null
Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08
4
Esempio
Inizalizzazione
nel costruttore
private Counter ore;
public Clock ()
{
ore = new Counter();
}
private Counter ore;
ore +
= new Counter(); NO !
Dichiarazione
inizalizzazione
public Clock ()
private Counter ore =
{
}
new Counter();
public Clock ()
{
}
25/02/2008
Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08
5
E allora dove inizializzare?
 I campi con tipi di dato primitivo possono essere
inizializzati insieme alla dichiarazione
 Gli oggetti è opportuno inizializzarli nel costruttore
 Eccezione
Il caso in cui non siamo sicuri che ogni costruttore
inizializzi i campi
(ma è un caso raro… quindi usiamo il costruttore!!!)
25/02/2008
Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08
6
JVM – Creazione di un oggetto
 JVM assegna gli argomenti passati con il costruttore ai
campi del nuovo oggetto creato
 Cerca il costruttore e ne legge la prima istruzione
 Se il costruttore inizia con l’invocazione ad un altro
costruttore, JVM esegue quel costruttore
 Se il costruttore inizia con l’invocazione al costruttore
di una superclasse, JVM esegue quel costruttore
25/02/2008
Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08
7
JVM – Creazione di un oggetto
 JVM cerca le definizioni dei campi ed esegue
le inizializzazioni nell’ordine in cui sono scritte
 Solo dopo aver eseguito tali inizializzazioni
esegue il restante codice del costruttore
 Eventuale re-inizializzazione dei campi
 Restituisce il riferimento all’oggetto creato
25/02/2008
Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08
8
Scarica