[英]how can this downcast works:(B)super.clone()?
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;
}
}
是工作。
什么? 如果將A擴展到B超過B可能會威脅到A和B的關系,那么您將無法將A強制轉換為B。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.