- 静态绑定
静态绑定:程序执行前就已经绑定(程序编译时就已经知道那个方法是那个类了)。static、final、private都是在编译时绑定,都是静态绑定。重载也是静态绑定。
- 动态绑定
动态绑定:编译时没绑定,在运行时期根据具体对象的类型进行绑定。重写是动态绑定。
1.虚拟机提取对象实际类型的方法表
2.虚拟机搜索方法签名
3.调用方法
class A{
public void sayHello(){
print("A");
}
}
class B extends A{
@override
public void sayHello(){
print("B");
}
}
public class C {
public static void main(String [] args){
A a = new B();
a.sayHello();
// print : B
}
}