簡體   English   中英

向下轉換如何工作:(B)super.clone()?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM