Lua学习笔记(六)

Lua面向对象

封装

-- 元类
People={isHumen=true}       -- 此处定义的元素都是相当于C++的静态成员变量

-- 基类方法new
function People:new(o,n,a)
    o=o or {}
    setmetatable(o,self)    -- self相当于C++的this指针,但是这里指代的是元类People而不是对象o
    self.__index=self
    o.name=n                -- 用self代替o相当于C++中给静态成员变量赋值
    o.age=a
    return o
end

-- 基类元方法__tostring
function People:__tostring()
    local sum="名字为:"..self.name.."\n年龄为:"..self.age -- 此处self指代的是实际调用时的对象
    return sum
end

-- 基类方法walk
function People:walk()
    print("我正在走!")
end

-- 创建对象
me=People:new(nil,"Jaxes",21)

-- 调用对象中的函数
print(me)       -- 等价于print(tostring(me))
me:walk()       -- 等价于me.walk(me)

继承

-- 类Worker派生自People类
Worker=People:new()

-- 派生类
function Worker:new(o,n,a,id)
    o=o or People:new(o,n,a)
    setmetatable(o,self)
    self.__index=self
    o.id=id
    return o
end

function Worker:__tostring()
    local sum=People.__tostring(self)
    sum=sum.."\nID为:"..self.id
    return sum
end

worker=Worker:new(nil,"kaka",55,01)
print(worker)
worker:walk()       -- 继承自父类函数walk

多态

这个部分暂时还不清楚怎么搞,暂时做为后续储备内容

转载于:https://www.cnblogs.com/JaxesZ/p/11217032.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值