Lua面向对象实现

function baseClass(base)    
     local cls = {}    
     if base then    
        cls = {}    
        for k,v in pairs(base) do cls[k] = v end    
        cls.base = base  
    else    
        cls = {ctor = function() end}    
    end    
    
    --cls.__cname = classname    
    cls.__index = cls    
    
    function cls:new(...)    
        local instance = setmetatable({}, cls)    
        local create    
        create = function(c, ...)    
             if c.base then  
                  create(c.base, ...)    
             end    
             if c.ctor then    
                  c.ctor(instance, ...)    
             end    
        end    
        create(instance, ...)    
        --instance.class = cls    
        return instance    
    end    
    return cls    
end

这个类主要是把基类和派生类绑定起来,并且调用ctor构造函数
用法如下

local base = baseClass()  
  
function base:ctor()  
end  
  
function base:funcA()  
end  
  
function base:funcB(value)  
end  
  
local top = baseClass(base)  
  
function top:ctor()  
end  
  
function top:funcB(value)  
    self.base.funcA(self, value)  
end

注意调用父类的方法要用"."别用":"是因为baseClass实现问题,不能用语法糖了

你可能感兴趣的:(Lua面向对象实现)