Java执行分为编译和运行两个阶段。当子类重写了父类的方法时,系统究竟是调用子类重写的方法,还是父类的方法?编译器调用何种方法或变量的操作就叫做绑定。不必纠结它的字面意思,它只是个词语而已,我们要注意的只是它是干什么的。
Java中的绑定又分为静态绑定和动态绑定。两者大致的区别是:
1.静态绑定发生在编译时期,动态绑定发生在运行时
2.使用private或static或final修饰的变量或者方法,使用静态绑定。而虚方法(可以被子类重写的方法)则会根据运行时的对象进行动态绑定。
3.静态绑定使用类信息来完成,而动态绑定则需要使用对象信息来完成。
4.重载(Overload)的方法使用静态绑定完成,而重写(Override)的方法则使用动态绑定完成。
|
|