[TOC]
local _class = {}
function Class(super)
local class_type = {}
class_type.ctor = false -- 构造函数
class_type.super = super -- 父类
class_type.new = function(...)
local obj = {}
do
local create
create = function (c, ...)
if c.super then
create(c.super, ...)
end
if c.ctor then
c.ctor(obj, ...)
end
end
create(class_type, ...)
end
setmetatable(obj, {__index = _class[class_type]}) -- 递归
return obj
end
local vtbl={}
_class[class_type] = vtbl
setmetatable(class_type, {__newindex =
function (t, k, v)
vtbl[k] = v
end
})
if super then
setmetatable(vtbl, {__index=
function (t, k)
local ret = _class[super][k]
vtbl[k] = ret
return ret
end
})
end
return class_type
endTODO
local child = Class(parent)
function child:ctor()
self.xxx = xxx
end[1] 云风.在 Lua 中实现面向对象
[2] Lua官网.Object-Oriented Programming
[3] Lua 面向对象