In Java, l’upcasting e il downcasting sono due concetti fondamentali nella programmazione orientata agli oggetti (OOP) che si riferiscono alla conversione di tipi di dati tra classi e sottoclassi.
Upcasting
L’upcasting è il processo di conversione del tipo del riferimento di un oggetto nel tipo della sua super classe.
Ci permette trattare un oggetto come se fosse un oggetto della super classe, accedendo soltanto ai metodi e campi della super classe.
Questo può avvenire anche con un casting implicito.
Esempio
public class Animale { public void mangia() { System.out.println("L'animale mangia"); }}public class Cane extends Animale { public void abbaia() { System.out.println("Il cane abbaia"); }}public class Main { public static void main(String[] args) { Animale animale = new Cane(); Cane cane = (Cane) animale; // Downcasting esplicito cane.abbaia(); // Stampa "Il cane abbaia" }