come mai una superclasse può essere assegnata ad una sottoclasse?
qui : http://www.math.unipd.it/~laurap/did...na11_6pgbn.pdf
ho trovato :
Può esserci la necessità di memorizzare un riferimento di una sottoclasse in un riferimento a superclasse.
Ma quale può essere questa necessità?
questo codice :
Compila e funziona. sc dopo l'assegnamento è diventata SottoClasse. Non riesco a capire questo funzionamento, mi sembra che l'ereditarietà venga rovesciata.codice:class SottoClasse extends SuperClasse { public void qualcosa (){} } public class SuperClasse { public static void main(String[] args) { SottoClasse ssc = new SottoClasse(); SuperClasse sc = new SuperClasse(); sc = ssc; ssc.qualcosa(); sc.qualcosa(); } }
Inoltre sebbene getClass mi dica che sc è SottoClasse non vedo (giustamente) il metodo perchè in teoria non è della sua classe.
Allora perchè è permesso questo assegnamento??
E la reflection dopo ha senso?
![]()
![]()