类类型转化

zhangjiangbochina 2003-11-20 03:10:22
class ClassA{
String name = "ClassA";
}

class ClassB extends ClassA { //ClassB是ClassA的子类
String name="ClassB";
}

class AccessTest {
void test( ) {
ClassB b=new ClassB( );
System.out.println (b.name); //打印: ClassB
ClassA a;
a=(ClassA)b;
System.out.println (a.name); //打印: ClassA

}
}
class Test{
public static void main(String[] args)
{
AccessTest at=new AccessTest();
at.test();
}
}
问题:为什么第二个打印出来是:ClassA
...全文
29 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
talentz 2003-12-03
  • 打赏
  • 举报
回复
强类型转换只针对类的成员函数,而类的成员变量是不会转换的。因为a是Class A的实例,所以第二个打印自然就是"ClassB".
zhangjiangbochina 2003-12-03
  • 打赏
  • 举报
回复
问:
b是ClassB的一个实例,
上面的
a=(ClassA)b,其中的(ClassA)是强致类型转化.向上兼容.
但b是一个实例,类型转化后赋值于a ,就这点不懂?
这于a=new ClassA()一样了.有没有什么区别?
giftxi 2003-11-20
  • 打赏
  • 举报
回复
a=(ClassA)b;
对象a是CLASSA的一个实例,所以会调用CLASSA的成员变量。

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧