关于“绑定技术”(binding)(续)

所谓“绑定(binding)”:就是建立method call(函数调用)和method body(函数本体)的关联。如果绑定发生于程序运行之前,称为“先期绑定(early binding),过程式语言无其他选择,只有先期绑定一种方式;绑定动作在程序执行期才根据对象的型别进行,称为“后期绑定(late binding)”,或称为“执行期绑定(run-time binding),或“动态绑定(dynamic binding)”。
        Java的所有函数,除了声明为final的函数之外,都属于后期绑定,后期绑定动作会自动发生。
        final的作用是禁止对函数进行覆写(overridding),而且告诉编译器该函数不需要后期绑定,程序从而可以获得较佳的效能,但实际上这么做并不会带来程序整体效能的提升。


例:
ExpandedBlockStart.gif ContractedBlock.gif   class  A  dot.gif {
ExpandedSubBlockStart.gifContractedSubBlock.gif  
public void play() dot.gif{
InBlock.gif     System.
out.println(“A is running.“);
ExpandedSubBlockEnd.gif }

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
class B extends A dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif  
public void play() dot.gif{
InBlock.gif     System.
out.println(“B is running.“);
ExpandedSubBlockEnd.gif }

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
class C extends A dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif  
public void play() dot.gif{
InBlock.gif     System.
out.println(“C is running.“);
ExpandedSubBlockEnd.gif }

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
public class TestLateBinding dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif  
static void play(A a) dot.gif{
InBlock.gif    a.play();
ExpandedSubBlockEnd.gif  }

ExpandedSubBlockStart.gifContractedSubBlock.gif  
public static void main(String[] args) dot.gif{
InBlock.gif   play(
new A());
InBlock.gif   play(
new B()); // late binding
InBlock.gif
   play(new C()); // late binding
ExpandedSubBlockEnd.gif
 }

ExpandedSubBlockEnd.gif}

InBlock.gif
InBlock.gif

转载于:https://www.cnblogs.com/johnny/archive/2004/06/22/17915.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值