美文网首页
Lua面向对象实现

Lua面向对象实现

作者: UnSkyToo | 来源:发表于2017-09-19 10:47 被阅读0次
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实现问题,不能用语法糖了

相关文章

  • 大话C与Lua(五) 面向对象的数据结构——userdata

    如何实现面向对象? 熟悉Lua的同学都知道!在Lua内部已经实现了面向对象的基本机制(table), 同时也为宿主...

  • Lua面向对象实现

    这个类主要是把基类和派生类绑定起来,并且调用ctor构造函数用法如下 注意调用父类的方法要用"."别用":"是因为...

  • Lua实现面向对象

    注:只是仿照,并不是真正的面向对象C#中是用this表示当前类的对象,Lua中使用self点(.)与冒号(:)的区...

  • 2018-08-02

    lua实现继承,重载和多态(上) *讲到lua的继承等面向对象的实现,首先得讲一下lua中的几个元方法和元表. s...

  • lua实现多继承

    lua对于面向对象的支持主要通过table来实现,每个table都是一个对象,对于继承,lua有元表的机制,通过s...

  • Lua 实现面向对象 (原创)

    要理解Lua是如何实现面向对象的。首先要熟悉Lua元表的相关知识,可以阅读我上一篇文章《Lua元表 (Metata...

  • Lua实现面向对象机制

    开篇废话 最近重拾了Lua,因为新项目在用。大概4-5年前准备进入从事游戏行的时候,看到某司的招聘简章中提到了Lu...

  • lua实现class(面向对象)

    用惯了python,觉得python真的好写。相比起来lua简直是一坨屎。拿lua开发的话,面向对象还是必不可少的...

  • 对lua中类、实例、继承的理解

    lua底层有__index等表,去实现类,实例、继承。但是比较绕。 参考1.1.5.Lua语言面向对象之复制表的方...

  • Lua实现继承

    Lua元表使用 中的__index元方法可以实现面向对象和继承关系: lua中没有类的概念,只有table,但可以...

网友评论

      本文标题:Lua面向对象实现

      本文链接:https://www.haomeiwen.com/subject/dykwsxtx.html