lua 面向对象

Posted Unity自学档案

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lua 面向对象相关的知识,希望对你有一定的参考价值。

lua面向对象

面向对象编程是当下最流行的编程框架,用Unity进行开发时使用的C#就是面向对象编程

面向对象的特性

  1. 封装
    封装简单理解就是把一个方法或者一个对象的信息,功能,和响应都集中到一个单独的对象中

  2. 继承
    父类有的公开方法和属性子类都可以使用,而子类特有的方法或者属性不对父类公开

  3. 多态
    同一个操作作用在不同的对象身上有着不同的表现形式,例如山羊和老虎都需要吃饭,把吃饭看成一个方法,山羊吃草而老虎却是吃肉。

  4. 抽象
    菜鸟教程解释:抽象(Abstraction)是简化复杂的现实问题的途径,它可以为具体问题找到最恰当的类定义,并且可以在最恰当的继承级别解释问题。

聊聊lua的面向对象

我们都知道最基本的对象是由方法和属性组成的,话说lua中的table结构是真的神奇,我们可以用table来构建数组,字典,同样我们要聊的lua的面向对象也是通过table来间接达到面向对象的编程思路。因为table中可以存储lua中的所有数据类型,当然包括function和基本的字段属性,所以我们可以通过table+function来模拟对象,至于继承这一块只能用元表来进行模拟,一般情况下不推荐使用原表模拟继承,我们能模拟最基本的对象一般情况下就够用了。

创建一个简单的对象如下:

people ={}people.name="小明"people.age=18people.sex="男"function people.eat()return "爱吃萝卜和青菜"end
print(string.format("姓名:%q\n性别:%q\n年龄:%q\n爱吃的美食:%q",people.name,people.sex,people.age,people.eat()))--[[上面创建了一个简单的人物对象people,这个对象共有三个字段属性,分别为name,age,sex有着一个方法体eat()这样就简单的模拟了一个对象,使用时直接用people打点调用其中的属性名和方法名即可]]--
菜鸟教程中一个很好的例子:
--以下简单的类包含了三个属性:area, length 和 breadth,printArea方法用于打印计算结果:-- 元类Rectangle = {area = 0, length = 0, breadth = 0}
-- 派生类的方法 newfunction Rectangle:new (o,length,breadth) o = o or {} setmetatable(o, self) self.__index = self self.length = length or 0 self.breadth = breadth or 0 self.area = length*breadth; return oend
-- 派生类的方法 printAreafunction Rectangle:printArea () print("矩形面积为 ",self.area)end
创建对象
--创建对象是为类的实例分配内存的过程。每个类都有属于自己的内存并共享公共数据。r = Rectangle:new(nil,10,20)

访问属性
--我们可以使用点号(.)来访问类的属性:print(r.length)
访问成员函数
--我们可以使用冒号 : 来访问类的成员函数:r:printArea()



创建一个简单的对象如下:


以上是关于lua 面向对象的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段9——JS中的面向对象编程

Lua程序设计之————Lua面向对象1

cocos2d-Lua02Lua面向对象

lua面向对象是怎么实现的

Lua面向对象设计(转)

Lua 面向对象