关闭

Lua面向对象实现

标签: Lua面向对象
229人阅读 评论(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实现问题,不能用语法糖了

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:87841次
    • 积分:31
    • 等级:
    • 排名:千里之外
    • 原创:38篇
    • 转载:2篇
    • 译文:0篇
    • 评论:32条
    文章分类
    最新评论