Piccola nota: se Punto rappresenta un punto 2D (quindi x,y) e PuntoTridimensionale lo estende aggiungendo la z .... allora la ereditarietà è sbagliata a priori concettualmente: un punto 3D NON è un caso "particolare" di punto 2D.
Se PuntoTridimensionale estende Punto, la seconda riga è tecnicamente corretta per il compilatore (e compila) (ogg potrebbe fare riferimento ad un oggetto PuntoTridimensionale) ma a runtime il downcast fallirà sempre, perché l'oggetto realmente istanziato è un Punto (l'hai assegnato poco prima ...), che ovviamente non è un PuntoTridimensionale.


Rispondi quotando