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

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

你可能感兴趣的:(lua继承-调用)