怎么知道调用的是哪个_gettransform?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,很抱歉,老师没有理解你描述的两种情况,老师为你梳理下此处代码的运行过程,同学先自己梳理一下思路,有疑问再提问,老师再帮你解答。

变量tf是实例化MultiTransform类得到的实例,而MultiTransform是继承自Transform类的。tf先调用了multi方法,又调用了done方法,其中multi方法使用的MultiTransform类自身的,而done方法,由于MultiTransform类自身并没有该方法,所以使用的是父类Transform的,如下:

http://img1.sycdn.imooc.com//climg/5f7e78290994d6a906620610.jpg

调用done方法后,done方法中,会继续调用父类Transform中的_start方法,在_start方法中,“this._getTransform”则是使用的MultiTransform类里面的_getTransform方法,即类如果自己有某一个方法,则优先使用自己的方法:

http://img1.sycdn.imooc.com//climg/5f7e791c09819c4609650809.jpg

而子类MultiTransform的_getTransform方法中,当type是multi时,还会执行_getTransform方法,该方法依旧是子类的_getTransform:

http://img1.sycdn.imooc.com//climg/5f7e79910965692b07980686.jpg

我们可以测试一下:

http://img1.sycdn.imooc.com//climg/5f7e79d509c8eafe07720852.jpg

http://img1.sycdn.imooc.com//climg/5f7e79f909ddd77807190506.jpg

http://img1.sycdn.imooc.com//climg/5f7e7a1609b12ed404990378.jpg

http://img1.sycdn.imooc.com//climg/5f7e7a5209cb541f06050198.jpg

因此,当子类、父类有同名方法时,由子类实例化出来的实例,会优先使用子类中的同名方法,只有当子类没有某一个方法时,才会使用父类的。

同学试着理解一下。

如果我的回答帮到了你,望采纳,祝学习愉快!

提问者 陈立天 2020-10-05 13:09:34

是不是当multi的时候 调用了是继承的方法,这时候继承里面的multi 又调用了原型的方法, 如果原型的方法里面嵌套的方法 如果继承里面也有这个方法是优先使用继承里面的方法这样理解么?

  • 提问者 陈立天 #1
    还说说如果原型和继承里面都有这个方法的时候 优先使用原型的方法_getTransform 在里面如果switch case不到这个multi的参数的话再去调用_getTransform 里面的switch继续进行casemulti的参数 这样理解么
    2020-10-05 13:13:56
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师