Linguagem Lua maneira orientada a objetos de copiar tabelas orientada a objetos

// clone表table
function clone(tab)
    -- 构造一个空table
	local ins = {}
	for key, var in pairs(tab) do
		ins[key] = var
	end
	return ins
end

function copy(dist,tab)
	for key, var in pairs(tab) do
		dist[key] = var
	end
end

People ={}

--function People.sayHi()
--	print("People say hi")
--end

People.sayHi = function (self)
	print("People say hi:"..self.name)
end

People.new = function (name)
	local self = clone(People)
	self.name = name

	return self
end

--local p = clone(People)
--p.sayHi()

local p = People.new("ZhangSan")
--p.sayHi(p)
p:sayHi()


-- 继承
Man = {}
Man.new = function (name)
	local self = People.new(name)
    -- 把man表内容copy到self中
	copy(self,Man)
	return self
end

Man.sayHello = function ()
	print("Man say hello")
end

-- 重写
Man.sayHi = function (self)
	print("Man sayHi "..self.name)
end

local m = Man.new("Lisi")
m:sayHi()

lua orientada a objeto

Publicado 524 artigos originais · elogiou 172 · mais de 100.000 visualizações

Acho que você gosta

Origin blog.csdn.net/INGNIGHT/article/details/104884172
Recomendado
Clasificación