美文网首页
《Oracle Java SE编程指南》17-02:编译期类型与

《Oracle Java SE编程指南》17-02:编译期类型与

作者: AT阿宝哥 | 来源:发表于2020-04-23 18:43 被阅读0次
课程封面-JavaSE-AT阿宝哥

内容导航

  • 前言
  • 1、编译期类型和运行期类型相同
  • 2、编译期类型和运行期类型不同

1、编译期类型和运行期类型相同


A  a = new A();
a.show();

声明A的时候,使用到的类型A表示对象的类型,被称为编译期类型,在编译期,虚拟机认为a的类型是A,对于a所使用的属性和方法的有效性将到类A中去验证。

构造方法A()中的A是运行期类型,在运行期,将执行运行期类型中的方法。


2、编译期类型和运行期类型不同

当有继承关系时,可能发生编译期类型和运行期类型不同的情况,即编译期类型是父类类型,运行期类型是子类类型。


//A类是B类的父类                              
A  ab = new B();
ab.show();

对象ab的编译期类型为父类A类,运行期类型为子类B类。

如果一个引用的编译期类型和运行期类型不同,那么一定是编译期类型与运行期类型有父类子类关系。

ab对象使用的方法,在编译期到类A中去校验,而运行则执行B类的方法

如果一个对象的编译期类型是父类,运行期类型是子类,可以对该对象进行强制类型转换,将其编译器类型转换为与运行期类型相同的类型,即:B b=(B)ab;


持续更新,欢迎留言提议!
码字很累,多点赞多赞赏!


扫描二维码,关注AT阿宝哥

相关文章

网友评论

      本文标题:《Oracle Java SE编程指南》17-02:编译期类型与

      本文链接:https://www.haomeiwen.com/subject/uhfzihtx.html