1. 程式人生 > >cocos2d-x lua 面向物件 ===> 呼叫基類在派生類中已經被過載了的函式

cocos2d-x lua 面向物件 ===> 呼叫基類在派生類中已經被過載了的函式

基類:

local Base = class("Base", function ()
    return cc.Layer:create()
end)

function Base:ctor( ... )
end

function Base:test(self, ... )
    
end

return Base

派生類

local BaseClass = require("Base")
local Derived = class("Derived", BaseClass)

function Derived:test( ... )
    -- 這裡已經過載了
end

function Derived:main()
    self:test()   --呼叫派生類中的test函式
    self.super:test(self)  --呼叫基類中的test函式
end

return Derived

重點就是在用super獲取到基類物件的時候函式傳遞要將自己傳入,因為lua中所有的成員,函式都已經儲存在派生類中了,基類呼叫不到。