A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈辉 中级黑马   /  2012-11-15 12:14  /  1188 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、定义两个类:
internal class B
{
}

internal class D:B
{
}

2、举例说明类型转换(用yes表示是成功编译和执行,还是造成编译时错误,还是造成运行时错误 ):
语句                                                     成功编译和执行             造成编译时错误           造成运行时错误                       错误分析
Object o1=new Object();                             yes
Object o2=new B();                                        yes
Object o3=new D();                                       yes
Object o4=o3 ;                                              yes
B b1=new B();                                                yes
B b2=new D();                                               yes
D d1=new D();                                               yes
B b3=new Object();                                                                          yes                                                                             等号前是B类型的变量,而等号后需要一个Object类型的变量
D d2=new Object();                                                                          yes                                                                                 同上
B b4=d1;                                                      yes
D d3=b2;                                                                                         yes                                                                            d3是D类型的变量,b2是B类型的变量         
D d4=(D)d1;                                                yes
D d5=(D)b2;                                                  yes
D d6=(D)b1;                                                                                                                              yes                                 d6是D类型的变量,而b1指向了B对象,D类型的变量不能引用B                  
                                                                                                                                                                                          对象               
B b5=(B)o1;                                                                                                                                 yes                                 同上
B b6=b2;                                                     yes

3、总结:
前提条件:两个类型要想能互相转换,两个类之间必须有几成关系。
      1、等号前面的引用变量和等号后面的引用变量的类型相同(例如:B b4=d1、D d4=(D)d1  ),否则编译错误(例如:D d3=b2 )
      2、等号前面的引用变量和等号后面的引用变量所指向的对象类型相同(例如:B b6=b2 、Object o2=new B() ),否则运行时错误(例如:D d6=(D)b1 )
同时满足上面两个条件,才能成功编译和执行 。

上述是个人观点,如有错误,还请大家指正。



















评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马