java要领挪用的绑定
将一个要领挪用同一个要领主体毗连到一起就称为“绑定”(Binding)。若在措施运行以前执行绑定(由编译器和链接措施,假如有的话),就叫作“早期绑定”。各人以前或者从未传闻过这个术语,因为它在任何措施化语言里都是不行能的。C编译器只有一种要领挪用,那就是“早期绑定”。
上述措施最令人疑惑不解的处所全与早期绑定有关,因为在只有一个Instrument句柄的前提下,编译器不知道详细该挪用哪个要领。
办理的要领就是“后期绑定”,它意味着绑定在运行期间举办,以工具的范例为基本。后期绑定也叫作“动态绑定”或“运行期绑定”。若一种语言实现了后期绑定,同时必需提供一些机制,可在运行期间判定工具的范例,并别离挪用适当的要领。也就是说,编译器此时依然不知道工具的范例,但要领挪用机制能本身去观测,找到正确的要领主体。差异的语言对后期绑定的实现要领是有所区此外。但我们至少可以这样认为:它们都要在工具中安插某些非凡范例的信息。
Java中绑定的所有要领都回收后期绑定技能,除非一个要领已被声明成final。这意味着我们凡是不必抉择是否应举办后期绑定——它是自动产生的。
为什么要把一个要领声明成final呢?正如上一章指出的那样,它能防备其他人包围谁人要领。但也许更重要的一点是,它可有效地“封锁”动态绑定,可能汇报编译器不需要进动作态绑定。这样一来,编译器就可为final要领挪用生成效率更高的代码。