面向对象三大特性

  • 封装
  • 继承
  • 多态

Lua的面向对象

Lua语言本身并不是为了面向对象而设计,但是可以通过Lua的tablemetatable等语言特性来实现面向对象。
通过将字段、函数放入表中,形成对象。可使用元表实现继承

代码实现

1、封装

创建Cat猫基类,具有Run( )方法

  1. ---@class Cat
  2. local Cat = {}
  3. Cat.__index = Cat
  4. --- 构造函数
  5. ---@param self Cat
  6. function Cat.New(self)
  7. local newObj = {}
  8. setmetatable(newObj, Cat)
  9. return newObj
  10. end
  11. --- 跑步方法
  12. ---@param self Cat
  13. function Cat.Run(self)
  14. print('Cat Run()')
  15. end
  16. return Cat

创建Cat类的对象

Cat = require('Cat')
local cat = Cat.New(nil)
cat.Run()

运行结果
image.png

2、继承

Tips:需要理解Lua的table、metatable机制,才能更好的理解在Lua中实现面向对象