信息发布→ 登录 注册 退出

Lua多重继承代码实例

发布时间:2026-01-11

点击量:
local function search(k, plist)
	for i, v in pairs(plist) do
		local temp_v = v[k]
		if temp_v then
			return temp_v
		end
	end
end

function createClass(...)
	local c = {}
	local parents = {...}
	
	--父类列表中搜索方法
	setmetatable(c, { __index = function(t, k) return search(k, parents) end } )
	c.__index = c
	
	--定义一个新的构造函数
	function c:new(o)
		o = o or {}
		setmetatable(o, c)
		return o
	end
	return c
end

Named = {}

function Named:getname()
	return self.name
end

function Named:setname(n)
	self.name = n
end

local NamedAccount = createClass(Account, Named)
account = NamedAccount:new({name = "Paul"})
print(account:getname())

标签:# brush  # NamedAccount  # Account  # createClass  # cpp  # local  # function  # pre  # class  # Lua  # temp_v  # return  # pairs  # search  # plist  # 列表中  # Lua面向对象之多重继承、私密性详解  # 多重继承  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!