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实现问题,不能用语法糖了
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/UnSkyToo/article/details/51548948
文章标签: Lua 面向对象
个人分类: 游戏开发
上一篇A*寻路算法——多人寻路、实时碰撞寻路、最近目的地
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭