关于java对象类型转换的问题,麻烦大家解答一下 感谢了

这两句转换我还是不懂里面的意思,(B)b和(C)c是什么意思,昨天老师讲课走神,没听懂Bb1=(B)b;Cc1=(C)c;子类可自动转换为父类对象,父类对子类的引用可通过... 这两句转换我还是不懂里面的意思,(B)b和(C) c 是什么意思,昨天老师讲课走神,没听懂

B b1 = (B)b ; C c1 = (C) c ;

子类可自动转换为父类对象,父类对子类的引用可通过强制转换为子类对象
public class A {}
public class B extends A {}
public class C extends A {}

A b = new B() ; A c = new C() ;

B b1 = (B)b ; C c1 = (C) c ;

c和b没关系不能互转。
展开
 我来答
百度网友22de17705
2014-12-14 · TA获得超过328个赞
知道小有建树答主
回答量:84
采纳率:100%
帮助的人:26.7万
展开全部
A b = new B() ; A c = new C() ;
声明是b和c都声明为A类型,但是实际类型是B和C。这里其实就是使用了子类转换为父类。
在使用时按照声明的类型进行检查。
所以B b1= b; 是非法的,因为A(父类)不能转换为B(子类)。
但由于b实际上是B类型的实例(实例化是用的是 new B())。
所以B b1 = (B)b; 强制转化一下时OK的。
但是如果开始是 A b = new A() ; 那么B b1 = (B)b;就会有问题。

C c1 = (C) c ;是一样的道理。
命运的左岸521
2014-12-14 · TA获得超过131个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:69.5万
展开全部
1.()强制转换,比如 浮点数 默认为 double类型,你想声明一个floalt类型的数据,就需要强制转换,float f = (float)1.0; // 进制间强转只发生在 高向低 转换

2.B b1 = (B)b ; C c1 = (C) c ;

可以这样理解,声明一个 bi对象,他的实例化 是 将b对象强制转换为B,这样前后都是B类的对象

3.子类可自动转换为父类对象,父类对子类的引用可通过强制转换为子类对象

涉及到多态的概念,父类可以用子类来实例化,子类可以重写或者覆盖掉父类中的方法实现
这样在调用父类的对象时,具体的实现要等到执行的时候才可以知道其调用的是父类的哪个子类的实现
4.c和b没关系不能互转

c和b都是a的子类,所以两者之间没有关系啊
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式