作者aubr3 (观众)
看板java
标题[问题] 关於type cast的问题
时间Tue Sep 28 23:49:27 2010
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