considerate questa situazione
B & C sono sottoclassi estensioni di A
D è sottoclasse estensione di C
assumiamo gli assegnamenti
A a1,a2,a3,a4;
B b;
C c1,c2;
D d;
a1 = new A(); a2 = new B(); a3 = new C(); a4 = new D();
b = new B();
c1 = new C(); c2 = new D();
d = new D()
per ciascuno degli assegnamenti devo dire se è consentito, se è consentito ma richiede un cast esplicito, se da errore di compilazione o se da errore in esecuzione
b=a2
b=a1
a1=c1
a2=b
a4=c1
a1=c1
c2=c1
c1=(C)a2
c1=a3
non riesco a trovare la logica del funzionamento
mettiamola facile:
A classe animale
B classe pesce
C classe mammifero
D classe mucca
b=a2: pesce(new pesce) = animale (new pesce)
necessita di un cast b=(B)a2 ? cioè pesce(new pesce) =(Pesce) animale (new pesce)
non ci capisco più nulla