将一个方法调用同一个方法主体关联起来被称做绑定。若在程序执行前进行绑定(由编译器和链接器实现),叫作前期绑定。读者可能历来没有据说过这个术语,由于它在面向过程语言中不须要选择就默认的绑定方式。例如C语言有一种方法调用,那就是前期绑定。后期绑定也叫作动态绑定或是运行时绑定,它的含义是在运行时根据对象的类型进行绑定。若是一种语言想实现后期绑定,那就必须具备某种机制,以便在运行时能判断出对象的类型,从而调用恰当的方法。也就是说,编译器一直不知道对象的类型,可是方法调用机制可以找到正确的方法体,并加以调用。后期绑定机制随编程语言的不一样而不一样,可是只要想一下就会知道,无论怎样都必须在对象中安置某种“类型信息”。编程
Java中除了static方法和final方法(private方法属于final方法)以外,其余的方法都是后期绑定。这意味着一般状况下,咱们没必要断定是否应该进行后期绑定,由于他会自动发生。有时候,将某个方法声明为final,能够用来防止他人覆盖该方法。可是更重要的一点或许是:这样作能够有效的关闭“后期绑定”,或者说是告诉编译器不须要动态绑定。这样,编译器就可以为以final方法调用生成更有效的代码。然而,大多数状况下,这样作对程序的性能不会有什么改观。因此,最好根据设计来决定是否使用final,而不是根据试图提升性能的目的来使用final。编程语言