Downcasting e Upcasting in Java

INDICE TUTORIAL

Cast di Classi

Il casting è una operazione che converte una variabile da un tipo dati ad un altro. In particolare, per le classi, abbiamo l’upcasting e downcasting.

Upcasting: si “forza” una classe ad essere una sua superclasse. Può essere esplicito, inserendo la superclasse tra parentesi tonde, o implicito.

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 è eseguito solo run-time, e viene lanciata, in caso di esito negativo, una ClassCastException.

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();

		
	}
	
}

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *