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

这两句转换我还是不懂里面的意思,(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没关系不能互转。

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 ;是一样的道理。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-14
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的子类,所以两者之间没有关系啊本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网