0
class A { 

}
public class B extends A {

public static void main(String[] args) {
     A m = new A();
     B n = (B)m;
}
}

无法遵守此代码。但是,在下面的代码中,这种向下转换有效。

 class A { 

}
public class B extends A implements Cloneable{

@Override
public B clone() throws CloneNotSupportedException {
return (B)super.clone();
}
public static void main(String[] args) {
     B m = new B();
     B n = m.clone();
}
}

那么,为什么这种沮丧有效呢?

=============修正============================

对不起我的错,应该是B n = **(B)**m;,不是B n = m;。我很抱歉。我已经在上面的代码中更正了它。

4

2 回答 2

1

即使在第一种情况下 -; A类{

       }
    public class B extends A {

    public static void main(String[] args) {
     A m = new A();
   //  B n = m;
     B n = (B)m;
   }  
     }

这是工作。

于 2013-08-07T06:11:00.150 回答
0

什么?你不能将 A 转换为 B,不管你们在说什么,如果 A 扩展了 B,那么 B 可以作为 A 和 B 的实例受到威胁,但 A 不能是 B 的实例。

于 2013-08-07T06:14:24.277 回答