Lua语言面向对象之复制表的方式面向对象

// 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面向对象

发布了524 篇原创文章 · 获赞 172 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/INGNIGHT/article/details/104884172
今日推荐