Lua——认识一下Lua的面向对象和继承

Lua语言核心在Table,通过将一个table作为另一个table的metatable元表,实现继承;
通过一个例子理解Lua的面向对象和继承;

---------------Person Base Class  
Person={}

function Person:new(o,age,name)              --Person的构造函数
    o=o or {}
    setmetatable(o,self)
    self.__index=self
    self.age=age or 0
    self.name=name or ""
    return o
end

function Person:SayHello()                   --Person的成员函数
    print("Hello,I am "..self.name,"I am"..self.age.."Years old.")
end

p=Person:new(nil,18,"Tom")                   --创建一个Person对象p
p:SayHello()

--------------Woman类  继承自Person
Woman=Person:new()                           --这句Woman是Person的构造函数的返回值,Person是Woman的原型

function Woman:new(o,age,name)               --Woman的构造函数
    o=o or Person:new(o,age,name)
    setmetatable(o,self)
    self.__index=self
    self.gender="Woman"                      --只改变一个gender字段
    return o
end

function Woman:SayHello()                    --重写成员函数
    Person:SayHello()
    print("I am a "..self.gender)
end

w=Woman:new(nil,20,"Sany")
w:SayHello()

---------------Man    继承自Person           --Man与Woman一样,继承自Person
Man=Person:new()

function Man:new(o,age,name)
    o=o or Person:new(o,age,name)
    setmetatable(o,self)
    self.__index=self
    self.gender="Man"
    return o
end

function Man:SayHello()
    Person:SayHello()
    print("I am a "..self.gender)
end

m=Man:new(nil,23,"yua")
m:SayHello()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值