Salve, ho qualche problema nel mettere a fuoco l'argomento del downcasting di oggetti...
Ho scritto queste tre semplici classi.
codice:public class Superclasse { public void stampa() { System.out.println("Sono la superclasse"); } public void superclass() { ; } }codice:public class Sottoclasse extends Superclasse { @Override public void stampa() { System.out.println("Sono la sottoclasse"); } public void subclass() { ; } }Come si legge dai commenti, mentre l'upcasting va tranquillo, il downcasting no, come se non ci fosse ereditarietà tra le classi coinvolte.codice:public class Programma { public static void main(String args[]) { Superclasse superclasse = new Superclasse(); Sottoclasse sottoclasse = new Sottoclasse(); // upcasting, tutto ok // superclasse = sottoclasse; // superclasse.stampa(); // downcasting (commentando l'upcasting) causa Exception in runtime sottoclasse = (Sottoclasse)superclasse; // e non posso invocare stampa() della superclasse } }
L'obiettivo dell'esercizio sarebbe invocare stampa() di Superclasse mediante un downcasting, che mi risulta lecito se c'è ereditarietà, ma a quanto pare mi sfugge qualcosa...
Anche scrivendo
non risolvo, sebbene sia una istruzione presa di sana pianta da materiale didattico Oracle!codice:(Sottoclasse)superclasse).stampa();![]()


Rispondi quotando