[問題] 關於type cast的問題
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