在lua中是没有类的概念的但是可以使用table和元表来实现类和类的继承,多继承。
代码如下:
--clsname 类名 -- ... 父类或者是被继承的类 function class(clsname, ...) --此函数用来返回一个类(其实就是一个表) local cls = {} local args = {...} --保存父类列表 if #args > 0 then setmetatable(cls, {__index= --设置此类的元表并把元表的 __index 设为一个函数,此函数用来查找父类中的变量或函数 function(_, k) for i, v in ipairs(args) do if v[k] ~= nil then return v[k] end end end}) end cls.classname = clsname --设置好类名 cls.New = function() --定义一个实例化对象的函数(其实就是创建一个新表) local instance = {} setmetatable(instance, {__index=cls}) --设置此对象的元表的__index方法 为这个类。 instance.classtype = cls -- 设置此类的类型(其实就是这个元表) return instance end return cls --最好返回这个类(这个表) end 使用方法如下: local CParent = class("CParent") --定义一个父类 local CSon = class("CSon", CParent) --定义子类继承自父类 local son = CSon.New() --创建一个孩子对象,此对象具有父类的所有属性