您的位置:首页 > 编程语言 > Lua

Lua的继承

2020-02-04 03:44 337 查看

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]

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

  • 点赞
  • 收藏
  • 分享
  • 文章举报
我是垃圾我不配 发布了14 篇原创文章 · 获赞 2 · 访问量 295 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: