local _class = {} function class(super) local class_type = {} class_type.ctor = false class_type.super = super class_type.new = function(...) local obj = {} ---super支持 obj.super = _class[super] 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 end