29.01.2015 Views

Download dell'intero lavoro - Provincia di Torino

Download dell'intero lavoro - Provincia di Torino

Download dell'intero lavoro - Provincia di Torino

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ESEMPIO: OVERLOADING<br />

DISTRUZIONE DI OGGETTI<br />

Dichiarazione <strong>di</strong> una classe MyNewClass<br />

public class MyNewClass {<br />

int i;<br />

public MyNewClass () {<br />

i = 10;<br />

}<br />

publicMyNewClass(intj) {<br />

i = j;<br />

} .....<br />

Overloa<strong>di</strong>ng: meto<strong>di</strong> omonimi devono essere<br />

<strong>di</strong>stinguibili per la quantità e/o per il tipo degli<br />

argomenti<br />

}<br />

Creazione <strong>di</strong> una istanza <strong>di</strong> MyNewClass<br />

MyNewClass mc0, mc1; /* <strong>di</strong>chiarazione, non creazione */<br />

mc0 = new MyNewClass(); /* creazione: l'attributo i vale 10 */<br />

mc0.i++; /* ora i vale 11 */<br />

mc1= new MyNewClass(20); /* creazione: l'attributo i vale 20 */<br />

mc1.i++; /* ora i vale 21 */<br />

Introduzione al linguaggio Java 121<br />

• Java non supporta <strong>di</strong>struttori <strong>di</strong> oggetti: gli oggetti non<br />

possono essere <strong>di</strong>strutti esplicitamente<br />

• Un oggetto privo <strong>di</strong> riferimenti incidenti non è più<br />

accessibile, e la memoria che esso occupa può<br />

essere "riciclata" dal garbage collector, che opera in<br />

un thread in<strong>di</strong>pendente a bassa priorità<br />

String s; /* <strong>di</strong>chiarazione, non creazione */<br />

s = new String ("abc"); /* creazione: s punta a "abc" */<br />

s = "def"; /* "abc" non è più puntata da s */<br />

Introduzione al linguaggio Java 122<br />

FINALIZZATORI DI OGGETTI<br />

IL MODIFICATORE native<br />

• Un oggetto "riciclabile" (cioè privo <strong>di</strong> puntatori<br />

incidenti) potrebbe trovarsi in uno stato poco "pulito"<br />

(ad es. potrebbe aver aperto dei file che non sono<br />

stati ancora chiusi)<br />

• Prima <strong>di</strong> riciclarlo, il garbage collector invoca il<br />

metodo finalize dell’oggetto, es.:<br />

protected void finalize () throws Throwable {<br />

...<br />

super.finalize(); /* meglio metterlo sempre */<br />

}<br />

• Il metodo finalize esiste sempre: se non è stato<br />

definito, viene ere<strong>di</strong>tato da Object;<br />

• Un metodo è <strong>di</strong>chiarato native quando il suo co<strong>di</strong>ce è<br />

<strong>di</strong>pendente dalla piattaforma (ad esempio, è scritto in<br />

un altro linguaggio)<br />

Esempio:<br />

public native void seek(long pos) throws IOException ;<br />

non deve essere<br />

specificato il body<br />

Introduzione al linguaggio Java 123<br />

Introduzione al linguaggio Java 124<br />

SOTTOCLASSI<br />

EREDITARIETA’<br />

• In Java, una classe può estendere una sola altra<br />

classe (ere<strong>di</strong>tarietà singola)<br />

• Una sottoclasse ere<strong>di</strong>ta i campi e i meto<strong>di</strong> della sua<br />

superclasse che non siano <strong>di</strong>chiarati private e che<br />

non siano costruttori, e li può usare come se fossero<br />

<strong>di</strong>chiarati al suo interno<br />

• Un oggetto <strong>di</strong> una sottoclasse può essere usato<br />

ovunque può essere usato un oggetto della sua<br />

superclasse<br />

Introduzione al linguaggio Java 125<br />

Introduzione al linguaggio Java 126<br />

Introduzione al linguaggio Java 21<br />

21

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!