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实现问题,不能用语法糖了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Lua中实现面向对象用的是元表的机制,元表与表是不同的个体,创建table时,不会自动创建元表。不过任何的表都可以...
    AngerCow阅读 713评论 0 0
  • C++ 面向对象编程 博客园地址:http://www.cnblogs.com/xiongxuanwen/p/42...
    先之阅读 722评论 0 1
  • @(python)[笔记] 目录 前言 在python中,一切皆对象面向对象的程序设计的核心就是对象;面向对象的程...
    CaiGuangyin阅读 654评论 0 5
  • 文/不妙 九月二十三日星期六的凌晨十二点,仅剩的两名新舍友已经安然入睡,而我还清醒着...... 数数日子,我独自...
    肥猫姑娘丶阅读 1,128评论 18 19
  • 一、什么是新品上市管理 定义:新品上市管理就是控制新品上市的时间,数量,陈列,推广,价格,动销,售罄,库整个过程 ...
    天使哈宝宝阅读 1,324评论 0 1

友情链接更多精彩内容