lua的面向对象

本文通过实例介绍了Lua如何使用table和function模拟类和对象,展示了创建对象、访问属性和成员函数的过程。同时,文章还探讨了Lua中的继承机制,包括基础类和派生类的定义,以及成员函数的重写。通过对Rectangle和Square类的创建,展示了类的构造函数和方法的使用,帮助理解Lua中的面向对象编程概念。
摘要由CSDN通过智能技术生成

lua中可以用table来描述对象的属性。lua中的类可以通过 table + function 模拟出来。

简单例子:

Retangle = {area = 0, length = 0, breath = 0}

function Retangle:new(o, length, breath)
    o = o or {}
   setmetable(o, self)
   self.__index = self
   self.length = length or 0
   self.breath = breath or 0
   self.area = self.length * self.breath
   return o
end

function Retangle:printArea()
    print("面积是:".self.area)
end

用以上例子,创建对象,访问属性,访问成员函数如下。

local ret = Retangle:new(nil,10,30)

print(ret.area)

ret:printArea()

 

 

lua的继承

-- Meta class
Shape = {area = 0}
-- 基础类方法 new
function Shape:new (o,side)
  o = o or {}
  setmetatable(o, self)
  self.__index = self
  side = side or 0
  self.area = side*side;
  return o
end
-- 基础类方法 printArea
function Shape:printArea ()
  print("面积为 ",self.area)
end


Square = Shape:new()
-- Derived class method new
function Square:new (o,side)
  o = o or Shape:new(o,side)
  setmetatable(o, self)
  self.__index = self
  return o
end


-- 派生类方法 printArea
function Square:printArea ()
  print("正方形面积 ",self.area)
end

以上例子,Sauare类重写了printArea方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值