class a
{ ... }
class b extends a
{...}
class c
{
public static void main(string args[])
{
a a1,a2
b b1,b2
a1=new a();
b1=new b();
a2=(a)b1;//这句话是什么意思?
b2=(b)a2;//这句话是什么意思?
}
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【zhang2008267】截止到2008-07-05 11:12:37的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    a2=(a)b1;
    b2=(b)a2;
    这是什么写法啊 书上没讲过
      

  3.   

    a2=(a)b1;//将b1转换成a类型,等价于a2=b1
    b2=(b)a2;//将a类型强制转换成b类型,
      

  4.   

    class b 是继承class a
    a2=(a)b1;//向上转型 
    b2=(b)a2;//向下转型 
      

  5.   

    thinking in java中讲的很清楚向上转型 向下转型的问题...
    说白了就是强制类型转换的感觉
      

  6.   

    恩,向上转型有限制
    这样写:
    a a2=new b();
    b2=(b)a2;
      

  7.   

    a2=(a)b1;//将b1转换成a类型,等价于a2=b1
    b2=(b)a2;//将a类型强制转换成b类型,
      

  8.   

    这个代码写的是正确的,不会报错~~~
    a2=(a)b1是向上转换(用父类的引用指向子类的对象),所以不会有错。其实向上转换用不着强制直接a2=b1;就可以了
    b2=(b)a2是向下强制转换,这个时候必须要强制了。上面说会出错,其实不会,因为a2指向的对象本身就是b的对象!!
      

  9.   

    a2=(a)b1;//向上转型
    b2=(b)a2;//向下转型
      

  10.   

    由于b继承自a,所以这个代码应该能编译,运行的。a1=new a();  //new a(),创建了一个a类的对象,在堆中分配空间,然后将a类型引用a1指向这个对象。
    b1=new b();  //同上面一样。
    a2=(a)b1;    //将a类型的引用a2指向new b()产生的b类实例,由于b是a的子类,父类引用指向子类对象是没有问题的。  
    b2=(b)a2;    //将b2指向a2所指向的内存,也就是new b()产生的对象,同样也没有任何错误。
      

  11.   

    不好意思,刚才弄错了。我支持这个。
    right answer.