Downcasting e Upcasting in Java

INDICE TUTORIAL

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 and Downcasting in java

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 28 times, 1 visits today)

Lascia un commento

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