Java动态绑定机制

目录

java的动态绑定机制(非常重要)

案例演示

总结 


java的动态绑定机制(非常重要)

 

        这里a的编译类型为A,运行类型为B。所以调用a的方法时,其实调用的就是B中的sum 和sum1方法,结果为40和30.

 调用sum和sum1时,都调用的是子类的,i也是子类的i。

案例演示

如果将子类B的sum方法给注销掉,输出的a.sum()的值为多少?还是40吗?

        由于运行类型为B,所以会先去B类里面去找sum方法,但是没找到,就去B的父类A那里去找。

        父类A的sum方法里有一个getI方法 。

        但是子类B也有一个getI方法,那么调用的时候调用的是子类的还是父类的呢?

        这里就是动态绑定机制

调用对象方法时,该方法与该对象的运行类型绑定,调用对象属性时,哪里声明哪里使用。

由于a的运行类型为B,所以这里调用的为子类B里的getI方法。 

所以这里其实是20+10。 

子类sum1注销后第二行的结果为多少?还是30吗?

        由于子类a的运行类型为B,所以先去B里去找,但B里没有sum1方法,所以再去父类A里去找。

 

 

        由于属性没有动态绑定机制,这里的i就是父类A中的i,也就是10。

 

        所以这里的结果会变为20。         

总结 

        如果子类中的sum被注释掉的话,调用sum时它会先去子类找,发现没有,就去父类找,父类中有一个geti方法,由于动态绑定,这个方法也会先去子类找,返回方法所在的类,也就是子类的i(值为20)与10相加后返回。

        如果子类的sum1也被注释掉,会调用父类的sum1,使用父类中的i,值变为20。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柏箱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值