静态绑定和动态绑定
绑定:将方法或成员变量与其所在的类/对象关联起来
静态绑定:指在程序编译阶段会去检测,将方法和成员变量关联到对应的类中。
在Java中,final、static修饰的方法以及构造函数都是静态绑定的。
动态绑定:会在程序运行时根据实例对象确定执行的方法。
每个类被加载到虚拟机时,在方法区保存元数据,并在一个方法表中,保存着这个类对应方法的指针,每个表指向具体的方法代码,如果子类重写父类的方法,则方法表中的方法指针会重新指向到实现的方法。
向上转型:为什么向上转型不能调用子类新增的方法,因为在编译时,编译器通过声明对象的类型(对象引用)去方法区匹配该类型的方法,如果有则编译通过。这里根据声明对象的类型去查找方法表中对应的方法,该类型没有实例化对象新增的方法,则不能调用。

浙公网安备 33010602011771号