要搞清楚动态绑定,首先搞清楚静态绑定是非常有帮助的。
如果方法是private、static、final或者构造方法,编译器将可以准确地找到调用哪个方法。这种调用方式就是静态绑定。
编译器在调用某一个具体方法时,可能存在该方法的多个重载形式,那么编译器接下来将进行重载解析(overloading resolution)。来找到对应的参数类型。但是如果每次调用方法的时候都进行搜索,时间开销太大,所以,虚拟机预先为每个类创建一个方法表,真正调用时候查找这张表就行了。
这个过程就是动态绑定。