Lua 之 面向对象 -- 继承

面向对象编程(Object Oriented Programming,OOP)是一种非常流行的计算机编程架构。 
Lua的也是一种面向对象的语言,我们常见的面向对象的编程语言有:

C++
Java
Objective-C
Smalltalk
C#
Ruby
面向对象具有三大特征:封装、继承、多态
对象由属性和方法组成。LUA中最基本的结构是table,所以需要用table来描述对象的属性。

lua中的function可以用来表示方法。那么LUA中的类可以通过table + function模拟出来。 
至于继承,可以通过metetable模拟出来(不推荐用,只模拟最基本的对象大部分时间够用了)

-- 继承
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
Square = Shape:new()
-- Shape自己的构造方法
function Square:new (o,side)
  o = o or Shape:new(o,side)
  setmetatable(o, self)
  self.__index = self
  return o
end
--Rectangle 继承自Shape
Rectangle = Shape:new()
-- Rectangle 自己的构造方法
function Rectangle:new (o,length,breadth)
  o = o or Shape:new(o,side)
  setmetatable(o, self)
  self.__index = self
  self.length = length or 0
  self.breadth = breadth or 0
  self.area = length*breadth;
  return o
end
myRectangle = Rectangle:new(nil,20,30)
myRectangle:printArea()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值