现在的位置:首页 > 软件开发技术 > 新闻详情

Java动态绑定

动态绑定(后期绑定)是指:在程序运行过程中,根据具体的实例对象才能具体确定是哪个方法。

动态绑定是多态性得以实现的重要因素,它通过方法表来实现:每个类被加载到虚拟机时,在方法区保存元数据,其中,包括一个叫做方法表(methodtable)的东西,表中记录了这个类定义的方法的指针,每个表项指向一个具体的方法代码。如果这个类重写了父类中的某个方法,则对应表项指向新的代码实现处。从父类继承来的方法位于子类定义的方法的前面。

编译

向上转型时,用父类引用执行子类对象,并可以用父类引用调用子类中重写了的同名方法。但是不能调用子类中新增的方法。

在代码的编译阶段,编译器通过声明对象的类型(即引用本身的类型)在方法区中该类型的方法表中查找匹配的方法(最佳匹配法:参数类型最接近的被调用),如果有则编译通过。(这里是根据声明的对象类型来查找的,所以此处是查找Father类的方法表,而Father类方法表中是没有子类新增的方法的,所以不能调用。)

编译阶段是确保方法的存在性,保证程序能顺利、安全运行。

运行

ft.say()调用的是Son中的say(),这里就是动态绑定机制的真正体现。

编译阶段在声明对象类型的方法表中查找方法,只是为了安全地通过编译(也为了检验方法是否是存在的)。而在实际运行这条语句时,在执行Fatherft=newSon();这一句时创建了一个Son实例对象,然后在ft.say()调用方法时,JVM会把刚才的son对象压入操作数栈,用它来进行调用。而用实例对象进行方法调用的过程就是动态绑定:根据实例对象所属的类型去查找它的方法表,找到匹配的方法进行调用。


----淄博软件公司----

想要了解更多详情欢迎来电咨询18678812288,或登陆网址www.wfydkj.net 联系人:王经理。

软件开发行业资讯

公司新闻

软件开发成功案例 查看更多+

  • 淄博智慧井盖---潍坊智慧井盖智能

    淄博智慧井盖---潍坊智慧井盖智能

  • 潍坊环卫人员管控平台--淄博在外

    潍坊环卫人员管控平台--淄博在外

  • 淄博、潍坊检察院人员分类管理绩

    淄博、潍坊检察院人员分类管理绩

  • 潍坊应急管理局智慧化平台整体解

    潍坊应急管理局智慧化平台整体解

  • 淄博交规速成系统|潍坊交规考试软

    淄博交规速成系统|潍坊交规考试软

  • 检察院网络服务大厅软件平台

    检察院网络服务大厅软件平台

  • 企业在线考试系统

    企业在线考试系统

  • 党员在线考试系统

    党员在线考试系统

  • 淄博心理测评软件|潍坊心理测评系

    淄博心理测评软件|潍坊心理测评系

  • 潍坊内部培训管理系统|淄博出国留

    潍坊内部培训管理系统|淄博出国留

  • 潍坊物流软件开发|淄博快递软件开

    潍坊物流软件开发|淄博快递软件开

  • 狠刹“四风”网络监督平台软件

    狠刹“四风”网络监督平台软件

  • 党员领导干部德廉知识在线学习测

    党员领导干部德廉知识在线学习测

  • 潍坊在线考试系统|淄博在线考试软

    潍坊在线考试系统|淄博在线考试软

  • 菏泽新巨龙煤矿采掘资料达标管理

    菏泽新巨龙煤矿采掘资料达标管理

  • 科技信息评价信息系统

    科技信息评价信息系统

  • 绩效考核系统

    绩效考核系统

  • 济钢炼铁厂管理信息系统

    济钢炼铁厂管理信息系统

  • 国税房产企业所得税监控管理系统

    国税房产企业所得税监控管理系统

  • 人力资源管理信息系统

    人力资源管理信息系统

无标题文档