关于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没关系不能互转。 展开
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 ;是一样的道理。
声明是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.()强制转换,比如 浮点数 默认为 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的子类,所以两者之间没有关系啊
2.B b1 = (B)b ; C c1 = (C) c ;
可以这样理解,声明一个 bi对象,他的实例化 是 将b对象强制转换为B,这样前后都是B类的对象
3.子类可自动转换为父类对象,父类对子类的引用可通过强制转换为子类对象
涉及到多态的概念,父类可以用子类来实例化,子类可以重写或者覆盖掉父类中的方法实现
这样在调用父类的对象时,具体的实现要等到执行的时候才可以知道其调用的是父类的哪个子类的实现
4.c和b没关系不能互转
c和b都是a的子类,所以两者之间没有关系啊
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询