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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值