Upcasting được cho phép trong Java, tuy nhiên việc downcasting gây ra lỗi biên dịch.
Lỗi biên dịch có thể được loại bỏ bằng cách thêm một cast nhưng dù sao cũng sẽ bị hỏng khi chạy.
Trong trường hợp này tại sao Java cho phép downcasting nếu nó không thể được thực thi trong thời gian chạy?
Có bất kỳ sử dụng thực tế cho khái niệm này?
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");
}
}