Java的多态机制:在同一类中有同名方法时,可以根据方法的参数签名的不同而决定最终绑定的方法。这是常见的动态绑定。除此之外,引用变量也有类似的绑定机制。
比如说接口类型、抽象类,它们是不可以被实例化的,但是它们可以被声明为引用变量。抽象类被声明引用变量时,可以接受一个子类的对象;接口作为引用变量时,可以接受一个该接口实现类的对象。接口之中并无实现,所以这里主要说父类与子类。如果是一个父类接受了一个子类对象,那么这个对象在调用方法和变量时究竟和谁绑定呢?
这是绑定的原则:
对于一个引用类型的变量,编译器按照它声明的类型处理
对于一个引用类型的变量,运行时Java虚拟机按照它实际引用的对象处理
a.成员变量:它包括静态变量和实例变量。它和引用变量的声明类型绑定。
b.实例方法:与变量实际引用的对象绑定。
c.静态方法:与变量被声明的类型的方法绑定。