quickcocoslua中继承的父类接口调用

在上一篇中讲了lua的继承,今天继续讲如何调用父类的接口
看以下代码

function base:ctor()
    print("---base.ctor---")
    self.m = 0   --成员变量
end
function base:getName( )
    print("---base getName---")
    print("self.m = ", self.m)
    self:fun()
end

function base:fun()
    print("-- base fun--")
end

local deriv = class("deriv", base)
function deriv:ctor()
    deriv.super.ctor(self)
end

function deriv:fun()
    print("-- deriv fun--")
end

function deriv:getName()
    self.super:getName()   --注意此行
    print("---deriv---")
end

function deriv:getMyName()
    print("---deriv getmyname---")
    --self.m = self.m + 1
    print("self.m = ", self.m)
end

local obj = deriv.new()
obj:getName()    

以上的代码中getName里面会调用父类的getName,然而杯具的是:self.m为nil!
为什么呢?
注意:在deriv的ctor中,将self传入,实际上的所有成员变量都放在self(deriv)中了,基类中并没有self.m这个变量!因此会出现这个问题
正确的用法是

function deriv:getName()
    self.super.getName(self)   --注意此行
    print("---deriv---")
end

要想知道.与:的区别,请参考这篇文章

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值