您的位置:首页 > 编程语言 > Java开发

Java动态绑定机制--笔记

2016-04-23 16:48 387 查看
在实例化一个对象后,编译器如何调用对象的方法呢?

1)编译器查看对象的声明类型和方法名

eg: A a = new A();a.f(param);

由于Java用于重载机制,那么类A中就可能有多个f方法,例如f(String name)或者f(int age);

所以在这一步,编译器将调用所有的访问属性符合及方法名为f的调用方法

2)编译器查看调用方法时提供的参数类型

这一步将会查找方法名为f且参数类型为String的方法,这个过程也称为重载解析.而由于允许类型转换这一步挑选很复杂,若是未找到匹配,或者经过类型转换后找到多个匹配,都会报告一个错误.

所以在这一步获得需要调用的方法名字和类型

3)如果为private、static 、final方法或者构造器,则为静态绑定

4)当程序运行,且动态绑定调用方法时

如果每次动态绑定调用方法时都进行搜索,那么时间开销将会很大。因此,虚拟机预先为每个类创建了方法表,其中列出了所有方法的签名和实际调用方法。这样在调用时搜索方法表就行了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 对象 实例