码迷,mamicode.com
首页 > 其他好文 > 详细

intanseof判别成功之后为什么还要强制类型转换?

时间:2020-02-17 23:41:32      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:ext   阶段   nta   end   sdn   test   mda   seo   运行   

Clas A{  }  父类
 
子类B :Class B extends A{
 public void  test(Object  o){
if(o instanceof A ){
    A  a = (A)o//  刚开始的时候  这里我一直闹不明白这里为什么要进行强制转换  因为b.test(c)这里明明传入C是A的子类   , 根据多态 子类的引用可以直接付给父类的引用  为什么还要进行强制类型转换呢?
后来才明白  if(o instanceof A ) 执行这句话的时候  在运行阶段 这里的确是判断o是不是A类的一个实例或者子类,但是在编译阶段 ,public void  test(Object  o) 这里的o编译器就是认为是Object的引用
 o  是所有类的父类,
A是Object的子类,那么在编译阶段  : 父类的引用不能直接付给子类  ,所以要进行强制类型转换
}
}
子类C:Class C extends A{}
B b = new B();
C c =new C();
b.test(c)
————————————————
版权声明:本文为CSDN博主「邯郸小壮壮」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_36695293/article/details/77388862

intanseof判别成功之后为什么还要强制类型转换?

标签:ext   阶段   nta   end   sdn   test   mda   seo   运行   

原文地址:https://www.cnblogs.com/hmy-666/p/12324273.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!