SLua學習紀錄,繼承

Slua metatable元表設置

parentMain.txt

__index是兩個下底線

baseMain = {}

function baseMain:new(xxxchildMainClass)
    --設定自己為元表
    local _base = setmetatable({},{__index = baseMain})
    local _super = getmetatable(_base)
 	
    setmetatable(xxxchildMainClass,_super)
	
    _base.super = setmetatable({},_super)
    
    --把childClass設為baseMain的元表
    local _child = setmetatable(_base,{__index = xxxchildMainClass})
    return _child
end

function baseMain:testBaseMain()
    print("Enter Base Main")
end

return baseMain

childMain.txt

require "baseMain"

childMain = {}

function main()
	
end

function childMain:new()
	print("lua--- run lua main function")
	childMain = baseMain:new("Child Main",childMain)
end

function childMain:testBaseMain()
	print("Child Main Run Test Base Main")
	self.super.testBaseMain(self)
end

return childMain

呼叫childMain

require "childMain"

function main()
	childMain:new()//先設定繼承
end

function start_run()
	childMain:testBaseMain()
end