动态绑定的定义和举例

什么时候用动态绑定,什么时候用静态绑定?用动态绑定和静态绑定有什么区别?

在编译期间可以确定的调用关系,就是静态绑定。在编译期间不能确定的调用关系,就是动态绑定。编译器尽可能静态绑定,因为这是高效的做法。但是对于无法在编译期间推断出具体类型,并且调用方法是虚方法,被派生类重写的情况,就只能动态绑定了。

两者对于程序员来说没有区别,换言之,如果你用java写程序,不用关系一个调用是静态的还是动态的。

静态绑定发生在编译时期,动态绑定发生在运行时
使用private或static或final修饰的变量或者方法,使用静态绑定。而虚方法(可以被子类重写的方法)则会根据运行时的对象进行动态绑定。
静态绑定使用类信息来完成,而动态绑定则需要使用对象信息来完成。
重载(Overload)的方法使用静态绑定完成,而重写(Override)的方法则使用动态绑定完成。
具体,你可以参考这篇文章http://droidyue.com/blog/2014/12/28/static-biding-and-dynamic-binding-in-java/