Lua复制方式创建对象表。

-- 这里是用来复制目标表的所有键值的,相当于在一个空表里装好对象表中的所有内容,然后返回该表。
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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值