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]
这种数据的覆盖,看似完成了继承但是却又似是而非,实在是奇怪