Cast di Classi
Il casting è l’operazione che converte una variabile da un tipo ad un altro. Questo vale anche per le classi, se vengono rispettate alcune condizioni.
In particolare, sempre per le classi, abbiamo l’upcasting e downcasting.

Upcasting: si “forza” una classe ad essere una sua sopraclasse. Può essere esplicitato, inserendo la classe a cui deve essere convertito tra le parentesi tonde, o no (viene fatto in automatico).
Esempio
class Animale{ } public class Mucca extends Animale{ public static void main(String[] args) { Animale m = new Mucca(); Mucca m1 = new Mucca(); //Mucca m = new Animale();// da errore di compilazione Animale a = m;//Animale a = (Animale)m; è la stessa cosa Animale a1 = m1; } }
Downcasting: casting da una classe a una sottoclasse. E’ possibile solo se l’oggetto, a run-time, è veramente un oggetto della sottoclasse. Questo controllo è fatto solo al momento della esecuzione (run-time), generando una ClassCastException in caso non lo si superi.
Esempio
class Animale{ } public class Mucca extends Animale{ public static void main(String[] args) { Animale m1 = new Mucca(); Animale a1 = (Mucca)m1;//downcasting , stiamo dicendo al compilatore che siamo sicuri // che m1, anche se dichiarato di tipo Animale, è in realtà di tipo Mucca Animale m = new Animale(); Animale a = (Mucca)m;//ClassCastException--> sarebbe come eseguire Animale a = (Mucca)new Animale(); } }
(Visited 3.845 times, 3 visits today)