(十二).类的绑定机制

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. //没有实现后绑定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值