quickcocoslua中继承的父类接口调用

来源:互联网 发布:数据库管理办法 编辑:程序博客网 时间:2024/04/29 16:43

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

function base:ctor()    print("---base.ctor---")    self.m = 0   --成员变量endfunction base:getName( )    print("---base getName---")    print("self.m = ", self.m)    self:fun()endfunction base:fun()    print("-- base fun--")endlocal deriv = class("deriv", base)function deriv:ctor()    deriv.super.ctor(self)endfunction deriv:fun()    print("-- deriv fun--")endfunction deriv:getName()    self.super:getName()   --注意此行    print("---deriv---")endfunction deriv:getMyName()    print("---deriv getmyname---")    --self.m = self.m + 1    print("self.m = ", self.m)endlocal 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

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

0 0