分享LUA多重繼承

LObject = {name = "aaa"}

function LObject:new(o)
	self.__index = self
	o = o or {}
	setmetatable(o,self)
	return o
end

function LObject:test()
	print(self.name)
end

LHuman = {age = 0}

function LHuman:new(o)
	self.__index = self
	o = o or {}
	setmetatable(o,self)
	return o
end

function LHuman:ptest()
	print(self.name.."   "..self.age)
end

function Class(...)
	local function search(k, plist)
		for i = 1,#plist do
			local v = plist[i][k]
			if v then return v end
		end
	end
	local c = {}
	local parents = {...}
	setmetatable(c, {__index = function(t, k) return search(k, parents) end})
	function c:new(o)
		o = o or {}
		setmetatable(o, c)
		c.__index = c
		return o
	end
	return c
end

LWoman = Class(LObject,LHuman)

yangxiumiao = LWoman:new({name="Yang Xiu Miao",age=27})

yangxiumiao:ptest()
相關文章
相關標籤/搜索