lua 继承学习

-----------------------------------------------------------------

local Base = {

--定义要使用的成员变量

    arrData = {}

}

 

function Base:new(oMataTable )

    --实例化后的对象

    oMataTable = oMataTable or {}

 

    --将Base的元表 也就是函数说明、操作符、table访问都复制到新对象上 

    --简单的解释就是 oMataTable 表有了Base的所有函数和table操作

    setmetatable(oMataTable, self)

 

    --这句很重要 因为self会根据table自身变化

    self.__index = self

 

    return oMataTable

end

 

function Base:SetData(key, value)

    self.arrData[key] = value

    print(key, self.arrData[key])

end

 

function Base:GetData(key)

    return self.arrData[key]

end 

------------------------------------------------------------------------------------

---

local Child = {

    --定义要使用的成员变量

    _iData = 11

    }

    

    --这句作用就是将Child定义的成员保留下来_iData 然后再继承

    Child = Base:new(Child)

    

    --覆盖基类函数

    function Child:SetData(key, value)

        self.arrData[key] = value + self._iData 

        print(key, self.arrData[key])

    end

    

    --------------------------------------------------

 

    function Mgr:TestClass()

        local base = Base:new()

        base:SetData(1, 10)

        --输出 1,10

        local childTest = Child:new()

        childTest:SetData(1, 10)

        --输出 1,21 父类方法被覆盖了

        print(childTest :GetData(1))

        --输出 20 子类继承了父类方法

    end

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值