所谓绑定是指将一个方法调用与方法主体关联起来的过程。
编译时绑定我们成为静态绑定,也叫前期绑定。
运行时刻进行绑定我们称为动态绑定,也叫后期绑定。
java中有哪些是静态绑定呢?
- 使用final修饰的方法
- 使用static修饰的方法
- 使用private修饰的方法
- 类的构造方法
其他都为动态绑定
类的属性是不支持多态的,类属性访问属于静态绑定(直接访问属性,不是通过方法访问)
一个例子,来自 https://blog.csdn.net/quinnnorris/article/details/57413811
下面代码的输出:
输出结果:
sup.field = 0, sup.getField() = 1
sub.field = 1, sub.getField() = 1, sub.getSuperField() = 0
package Polymorphic;
/**
*
* @author QuinnNorris
* 域不具有多态性
*/
public class polymorphics {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Super sup = new Sub();
System.out.println("sup.field = " + sup.field + ", sup.getField() = "
+ sup.getField());
Sub sub = new Sub();
System.out.println("sub.field = " + sub.field + ", sub.getField() = "
+ sub.getField() + ", sub.getSuperField() = "
+ sub.getSuperField());
}
}
class Super {
public int field = 0;
public int getField() {
return field;
}
}
class Sub extends Super {
public int field = 1;
public int getField() {
return field;
}
public int getSuperField() {
return super.field;
}
}