Java中允许升级,但是下播会导致编译错误。编译错误可以通过添加强制转换来删除,但无论如何在运行时会中断。在这种情况下,如果不能在运行时执行Java为什么允许下播?这个概念有什么实际用途吗?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");
}}Java下播
3 回答

哆啦的时光机
TA贡献1779条经验 获得超6个赞
Object o = getSomeObject(),String s = (String) o; // this is allowed because o could reference a String
Object o = new Object();String s = (String) o; // this will fail at runtime, because o doesn't reference a String
Object o = "a String";String s = (String) o; // this will work, since o references a String
ClassCastException
Integer i = getSomeInteger();String s = (String) i; // the compiler will not allow this, since i can never reference a String.

泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
public void doit(A a) { if(a instanceof B) { // needs to cast to B to access draw2 which isn't present in A // note that this is probably not a good OO-design, but that would // be out-of-scope for this discussion :) ((B)a).draw2(); } a.draw();}
添加回答
举报
0/150
提交
取消