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;
。
我很抱歉。我已经在上面的代码中更正了它。
最佳答案
即使在第一种情况下 -; A 类{
}
public class B extends A {
public static void main(String[] args) {
A m = new A();
// B n = m;
B n = (B)m;
}
}
工作了。
关于java - 这个沮丧的:(B)super.克隆()如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18095781/