-- 这里是用来复制目标表的所有键值的,相当于在一个空表里装好对象表中的所有内容,然后返回该表。
local function Clone(obj)
local object = {}
for key, var in pairs(obj) do
object[key] = var
end
return object
end
-- 这里是用来把tab中的表内容,累加到target表中,也就是说,target表中也包括了tab中的表内容,相当
--于继承
local function CopyObj(target,tab)
for key, var in pairs(tab) do
target[key] = var
end
return target
end
Human = {}
Human.new = function(name,age,height,desc)
local self = Clone(Human)
self.Name = name
self.Age = age
self.Height = height
self.Desc = desc
return self
end
Human.PrintInfo = function(self)
print("Human name is "..self.Name,"Age:"..self.Age,"Height:"..self.Height,"Desc:"..self.Desc)
end
Human.Walk = function(self)
print(self.Name.." is walk.")
end
local T1 = Human.new("T1",12,22,"www.com.cn")
T1:PrintInfo()
T1:Walk()
local T2 = {}
T2 = CopyObj(T2,T1)
T2.Name= "T2"
T2:Walk()
local Mjt = {}
Mjt.new = function(name,age,height,desc)
local self = Human.new(name,age,height,desc)
CopyObj(self,Mjt)
return self
end
-- 子类自有的方法
Mjt.Programmer = function(self)
print("I'am Programming.")
end
local me = Mjt.new("Pants",80,20,"cabcab")
me:PrintInfo()
-- 重写父类方法,父类此方法不被影响
me.Walk = function (self)
print("Dance,Dance,Dance.")
end
me:Walk()
me:Programmer()
T2:Walk()
Lua复制方式创建对象表。
最新推荐文章于 2023-07-26 11:41:19 发布