L'upcasting è consentito in Java, tuttavia il downcasting genera un errore di compilazione.
L'errore di compilazione può essere rimosso aggiungendo un cast ma si romperà comunque in fase di esecuzione.
In questo caso, perché Java consente il downcasting se non può essere eseguito in fase di esecuzione?
C'è qualche utilità pratica per questo concetto?
public class demo {
public static void main(String a[]) {
B b = (B) new A(); // compiles with the cast,
// but runtime exception - java.lang.ClassCastException
}
}
class A {
public void draw() {
System.out.println("1");
}
public void draw1() {
System.out.println("2");
}
}
class B extends A {
public void draw() {
System.out.println("3");
}
public void draw2() {
System.out.println("4");
}
}