Lua的继承

lua 的继承实现

在我看来,lua中的继承更像是一种覆盖,像是俄罗斯套娃一样,层层包裹的东西,但是里面的内容又是暴露在第一层。
上代码:

Bag = {}
--创建基类
function Bag:new (object,volume)
  object = object or {}
  self.__index = self
  setmetatable(object, self)
  volume = volume or 0
  object.volume = volume
  return object
end
-- 基类方法 printVolume
function Bag:printVolume ()
  print("包容量为 "..self.volume)
end

BackBag = Bag:new()
function BackBag:new (object,volume,loads)
  object = object or Bag:new(object,volume)
  setmetatable(object, self)
  self.__index = self
  object.loads = loads or 1
  return object
end

-- 子类方法 printVolume
function BackBag:printVolume ()
  print("背包容量为:"..self.volume.."载重为:"..self.loads)
end

local myBag = Bag:new(nil,40)
local myBackBag = BackBag:new(nil,60,20)
myBag:printVolume()
myBackBag:printVolume()

运行结果为:

包容量为 40
背包容量为:60载重为:20
[Finished in 0.0s]

这种数据的覆盖,看似完成了继承但是却又似是而非,实在是奇怪

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值