静态绑定:使用编译类型的对象引用
动态绑定:使用运行类型所指的对象
其主要区别是方法是否可以被覆盖(注意和重载的区别),若可以覆盖,则可请求动态绑定。Java语言和虚拟机中,动态绑定是缺省的,否则可使用关键字final声明静态绑定。
除了final使用静态绑定,还有两种特殊情况
1. 类方法(static method,不能被继承,也就不能被覆盖)
2. 包含关键字super的方法(直接显示指出访问其父类的构造函数,方法和变量,也不存在覆盖)
静态绑定:使用编译类型的对象引用
动态绑定:使用运行类型所指的对象
其主要区别是方法是否可以被覆盖(注意和重载的区别),若可以覆盖,则可请求动态绑定。Java语言和虚拟机中,动态绑定是缺省的,否则可使用关键字final声明静态绑定。
除了final使用静态绑定,还有两种特殊情况
1. 类方法(static method,不能被继承,也就不能被覆盖)
2. 包含关键字super的方法(直接显示指出访问其父类的构造函数,方法和变量,也不存在覆盖)