Upcasting ist in Java zulässig, Downcasting führt jedoch zu einem Kompilierungsfehler.
Der Kompilierungsfehler kann durch Hinzufügen einer Umwandlung behoben werden, würde aber zur Laufzeit trotzdem unterbrochen.
In diesem Fall, warum erlaubt Java Downcasting, wenn es zur Laufzeit nicht ausgeführt werden kann?
Gibt es eine praktische Verwendung für dieses Konzept?
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");
}
}