Lua 面向对象

简介:

面向对象特征

  • 1) 封装:指能够把一个实体的信息、功能、响应都装入一个单独的对象中的特性。

  • 2) 继承:继承的方法允许在不改动原程序的基础上对其进行扩充,这样使得原功能得以保存,而新功能也得以扩展。这有利于减少重复编码,提高软件的开发效率。

  • 3) 多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。

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


Lua 中面向对象

我们知道,对象由属性和方法组成。LUA中最基本的结构是table,所以需要用table来描述对象的属性。

lua中的function可以用来表示方法。那么LUA中的类可以通过table + function模拟出来。

至于继承,可以通过metetable模拟出来(不推荐用,只模拟最基本的对象大部分时间够用了)。


Lua中的表不仅在某种意义上是一种对象。像对象一样,表也有状态(成员变量);也有与对象的值独立的本性,特别是拥有两个不同值的对象(table)代表两个不同的对象;一个对象在不同的时候也可以有不同的值,但他始终是一个对象;与对象类似,表的生命周期与其由什么创建、在哪创建没有关系。对象有他们的成员函数,表也有。

创建对象是位类的实例分配内存的过程。每个类都有属于自己的内存并共享公共数据。


访问属性

我们可以使用点号(.)来访问类的属性:

print(r.length)

访问成员函数

我们可以使用冒号 : 来访问类的成员函数:

r:printArea()

内存在对象初始化时分配。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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
相关文章
|
5月前
|
PHP 开发者
探索PHP的面向对象编程(OOP)特性
【8月更文挑战第1天】在这篇文章中,我们将深入探讨PHP语言的面向对象编程(OOP)特性。我们将通过具体的代码示例,来理解类和对象的概念,以及如何在PHP中使用它们。我们还将讨论封装、继承和多态性等OOP的关键概念,并通过实际的代码片段来演示它们的应用。无论你是PHP的新手,还是有一定经验的开发者,这篇文章都将帮助你更好地理解和使用PHP的OOP特性。
33 4
|
7月前
|
安全 C++ Python
lua程序设计(一)
lua程序设计(一)
|
编译器 Linux C语言
lua编程基础
lua编程基础
120 0
|
数据处理 PHP
PHP面向对象和面向过程的区别
PHP面向对象和面向过程的区别
81 0
|
算法 数据处理 PHP
PHP面向过程和面向对象的区别是什么?底层原理是什么?
PHP面向过程和面向对象的区别是什么?底层原理是什么?
217 0
|
数据采集 Linux C++
【Lua】《Lua 程序设计》摘录
【Lua】《Lua 程序设计》摘录
116 3
|
PHP 数据安全/隐私保护
php-面向对象OOP
php-面向对象OOP
82 0

热门文章

最新文章