Lua 类的继承
Lua中table是非常强大的数据结构,利用table再结合元表metatable,可以在Lua中模拟类,并实现面向对象编程中具有的特性:封装、继承、多态。
基类
-- 基类
BaseObject = {}
function BaseObject:new(o)
--construct
o = o or {}
setmetatable(o, self)
self.__index = self
return o
end
function BaseObject:myFunc()
print("call BaseObject:myFunc")
end
function BaseObject:myFunc2()
print("call BaseObject:myFunc")
end
return BaseObject
派生类
local BaseObject = require('BaseObject')
-- 派生类
MyObject = BaseObject:new()
function MyObject:new(o)
-- construct
o = o or {}
setmetatable(o, self)
self.__index = self
return o
end
function MyObject:myFunc2()
print("call MyObject:myFunc2")
end
return MyObject
使用
local MyObject = require('MyObject')
-- 创建对象
local obj = MyObject:new()
obj:myFunc()
obj:myFunc2()