基类:
local Base = class("Base", function ()return cc.Layer:create()
end)function Base:ctor( ... )
endfunction Base:test(self, ... )endreturn Base
派生类
local BaseClass = require("Base")
local Derived = class("Derived", BaseClass)function Derived:test( ... )-- 这里已经重载了
endfunction Derived:main()self:test() --调用派生类中的test函数self.super:test(self) --调用基类中的test函数
endreturn Derived
重点就是在用super获取到基类对象的时候函数传递要将自己传入,因为lua中所有的成员,函数都已经保存在派生类中了,基类调用不到。
当然如果没有在派生中重载基类函数的话,直接self:xxxxx()就可以调用了,很方便。
我根据我的理解又做了一点小小的改动,使得使用方便很多
local Base = class("Base", function ()return cc.Layer:create()
end)function Base:ctor( app )--将派生类指针赋值给基类自己if not self and not app thenself = append
endfunction Base:test(self, ... )endreturn Baselocal BaseClass = require("Base")
local Derived = class("Derived", BaseClass)function Derived:test( ... )-- 这里已经重载了
endfunction Derived:main()self.super:ctor(self) --这里直接传递self指针进去,以后调用只需要self.super:xxx(..)就可以了self:test() --调用派生类中的test函数self.super:test() --调用基类中的test函数
endreturn Derived
这样以后调用就方便啦