Posto il codice....
Non capisco perchè vi sia un errore run-time quì:codice:class Point { int x, y; } class ColoredPoint extends Point { int color; public void setColor(int c) { color = c; } } public class Casting { public static void main(String[] args) { Point p = new Point(); Point p2 = new ColoredPoint(); ColoredPoint cp = new ColoredPoint(); cp = (ColoredPoint)p; //Errore a run-time //cp = (ColoredPoint)p2; //OK //Long l = (Long)p; //Errore in compilazione //int i = (int) p; //Errore in compilazione //cp.setColor(1); //p2.setColor(2); //((ColoredPoint)p2).setColor(2); //((ColoredPoint) p).setColor(4); } }
cp = (ColoredPoint)p;,
stiamo effettuando un semplice cast narrowing,perchè?
Poi un altro errore run-time è
p2.setColor(2);
e dice che il metodo set color non appartiene a p2,ma allora a che serve fare così:
Point p2 = new ColoredPoint();
perchè si dichiara un oggetto di una classe invocando la new su una sottoclasse?

Rispondi quotando

