int a=1;
object b=a;
a=2;
int c=(int)b;然后输出a,b,c.结果应该是2,1,1. 为什么那。我理解的是object 是引用类型,他存储的应该是a的内存地址啊。然后a的值变了 但内存地址不变啊。在int c=(int)b; 的时候去找a的地址应该是2了。怎么还是1那?还一个问题,类C1和类C2  C1 c1=new C2();这样就有问题,如果C2继承了C1的话C1 c1=new C2()就没问题。为什么那 C1 c1=new C2() 什么情况下要这么声明。如果你感觉一句两句解释不清楚,发相关的文章地址给我也行 谢谢了

解决方案 »

  1.   

    object b=a;
    先复制,再将这个复制值的引用存储到b中C1 c1=new C2();
    多态. 
      

  2.   

    b已经进行了类型转换,转换成了值类型int,所以不会存地址,而是直接赋值
    楼主下面的问题,对象实例化时要调用构造函数,当然要保证类型一直,如果2个类没有关系,就不可能如此