Topic: 关于对象间类型转换的问题,实在是没办法了自己大概钻牛角间了

  Print this page

1.关于对象间类型转换的问题,实在是没办法了自己大概钻牛角间了 Copy to clipboard
Posted by: balbeleet
Posted on: 2006-07-21 12:20

class A
{
String s="class A";
}
class B extends A
{
String s="class B";
}
class TV
{
public static void main(String args[])
{
B bb,b=new B();
A a,aa;
a=(A)b; //显示转换
aa=b; //隐式转换
System.out.println(a.s);
System.out.println(aa.s);
bb=(B)a; //显示转换
System.out.println(bb.s);
}
}
计算结果是:
class A
class A
class B
为什么不是
class B
class B
class A 呢
这里a=(A)b不是把 类b的引用(内存地址)赋值给a么 怎么理解?
下面的aa=b; bb=(B)a; 应该是同理吧!

2.Re:关于对象间类型转换的问题,实在是没办法了自己大概钻牛角间了 [Re: balbeleet] Copy to clipboard
Posted by: blueshoot
Posted on: 2006-07-22 10:19

对于你所定义的A类和B类,首先,B类是A类的子类,所以,a=(A)b,将b对象的地址赋值给a对象,而a对象是A类(B类的父类)的实例,那么a对象只能看见属于A类而不属于B类部分的对象成员,也就是String s="class A",总的来说,只要你理解了B类的成员有2个:String s="class A";String s="class B";这个问题就很好理解了

3.Re:关于对象间类型转换的问题,实在是没办法了自己大概钻牛角间了 [Re: balbeleet] Copy to clipboard
Posted by: balbeleet
Posted on: 2006-07-24 21:27

谢谢你,这个问题真的是想了好几天了.你说的很清晰很易懂


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923