La conversión ascendente está permitida en Java, sin embargo, la reducción genera un error de compilación.
El error de compilación se puede eliminar agregando un reparto, pero de todos modos se rompería en el tiempo de ejecución.
En este caso, ¿por qué Java permite el downcasting si no se puede ejecutar en tiempo de ejecución?
¿Hay algún uso práctico para este concepto?
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");
}
}