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

编译时类型与运行时类型

时间:2017-06-20 10:51:19      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:9.png   java   调用   增强   image   父类   技术分享   一个   blog   

1.编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。

         当编译时类型和运行时类型不一致时,就会出现所谓的多态。

 

 

技术分享

技术分享

 因为子类是一个特殊的父类,因此java允许把一个子类对象直接赋给一个父类的引用变量,无需任何类型转换(向上转型)

 引用变量在编译阶段只能通过编译时类型所具有的方法,但运行时则执行它运行时类型所具有的方法。因此,编写java代码时,引用变量只能

调用声明该变量时所用类里包含的方法。

 2.编写程序时,引用变量只能调用它编译时类型的方法,而不能调用运行时类型的方法,即使实际所引用的对象确实包含该方法。

         如果需要让这个引用变量调用它运行时类型的方法,也就是要把一个父类对象赋给子类对象时,则必须要把它强制类型转换成运行时类型。(向下转型)

      SubClass sb=(SubClass)ploymophicBc

  注意:引用类型之间的转换只能在有继承关系的两个类型之间进行。如果试图把一个父类实例转换成子类类型,则这个对象必须实际上是子类实例才行(即编译时类型为父类类型,而运行时类型为子类类型)

 使用instanceof运算符先进行判断是否可以成功转换,增强程序健壮性

编译时类型与运行时类型

标签:9.png   java   调用   增强   image   父类   技术分享   一个   blog   

原文地址:http://www.cnblogs.com/wxw7blog/p/7052949.html

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