[問題] 關於type cast的問題

看板java作者 (觀眾)時間15年前 (2010/09/28 23:49), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
1.public class IntegerStack implements Cloneable 2.{ 3. private int[] buffer; 4. private int top; 5. 6. ...... 7. 8. public IntegerStack clone() 9. { 10. try 11. { 12. IntegerStack nObj=(IntegerStack) super.clone(); 13. nObj.buffer=buffer.clone(); 14. return nObj; 15. } 16. catch(CloneNotSupportedException e) 17. { 18. throw new InternalError(e.toString()); 19. } 20. } 21.} 在第12行傳回來的應該是一個Object 然後轉成IntegerStack 我的問題是 為什麼他可以存取nObj.buffer 即使是轉成了IntegerStack 但他應該是referance到一個Object的instance Object沒有buffer這一個field才對不是嗎? 我有自己寫一個類似的可以compile過 但是當執行到了類似上面12行的downcast時便出錯了 程式碼如下 public class X2 { //.... public static void main(String[] args) { Y y=new Y(); } } class Y extends X2 { public int test; public Y() { X2 x2=new X2(); Y y=(Y) x2; } } 感恩 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.167.67.171
文章代碼(AID): #1CeWwAyg (java)