1).绑定
只将一个方法定义与一个方法调用相关联的过程。
2).早绑定
在代码编译阶段就确定方法定义与方法调用相关联。
3).后绑定(动态绑定)
方法的定义直到运行时才绑定到方法的调用。(也就是说在运行时才能具体确定调用哪一个方法)
4).toString方法的后绑定
在阅读他人的代码时经常可以看到如下代码:
Sale aSale =new Sale (1212);
System.out.println(aSale);
这种语句直接调用aSale类中的toString方法,让我们摸不着头脑。
这要从System.out.println方法的定义说起。
public void println(Object theObject)
{
System.out.println(theObject.toString());
}
aSale类作为参数调用println方法,调用的虽然是Object类型的toString方法,但是aSale类是Object类的派生类,也具有Object的类型,println方法在运行时会确定具体调用的toString方法。
5).Java对私有方法、被标记为final的方法、静态方法不使用后绑定。
6).静态方法不使用后绑定
标题被解读为 :
被标记为static的方法被调用时在编译阶段就被确定,也就是早绑定。
而static方法在具体执行其定义的语句块时仍可使用后绑定,就像main方法虽然是静态的,但在执行时仍可以使用后绑定来实现多态性。
//A是B的基类,show方法是A类的静态公有方法
public static void main(String[] args)
{
A a=new A();
B b=new B();
a.show();
b.show();
a=b; //将派生类的对象引用赋值给基类
a.show();
运行结果:
This is A.
This is B.
This is A. //没有实现后绑定