Java多态与动态绑定
1.多态
一个实例变量可以引用多种不同类的实例的现象称为多态,这些类之间是父类与子类的关系,即父类引用可以指向子类的对象,这样参数是父类类型的方法也可以用来处理子类。
2.动态绑定
父类有多个子类,且多个子类都继承了父类中某个方法并以不同实现重写了。由于多态,父类引用可能指向的是子类对象,在使用父类引用调用该方法时,虚拟机可以在运行时决定调用对象的实际类型中的实现,即所谓的动态绑定。
3.静态绑定
静态绑定即在编译时根据引用声明的类型来决定调用哪个实现,调用private方法、final方法以及static方法时就是采用静态绑定,访问类的属性时也采用静态绑定。
class Parent { public int value = 9; public int method() { return value; } public void printValue() { System.out.println(value); //静态绑定,隐式参数this的声明类型是Parent,因此访问的是父类中的value System.out.println(method()); //动态绑定,隐式参数this传递进来的实际类型是Child,因此调用的是子类中的method } } class Child extends Parent { public int value = 8; public int method() { value--; return value; } } public class Test extends Parent { public static void main(String[] args) { Parent child = new Child(); child.printValue(); } }
参考资料 《Java核心技术》