当前位置: 代码网 > it编程>前端脚本>Lua > 浅谈Lua的面向对象特性

浅谈Lua的面向对象特性

2024年05月18日 Lua 我要评论
面向对象的特性 类: 类是可扩展的模板用来创建对象,提供状态的初始值(成员变量)和行为的实现。 对象: 它是类的实例并具有分配给自己独立的内存。 继承: 它是由变量和类的函数被其他类继承的

 面向对象的特性

  •     类: 类是可扩展的模板用来创建对象,提供状态的初始值(成员变量)和行为的实现。
  •     对象: 它是类的实例并具有分配给自己独立的内存。
  •     继承: 它是由变量和类的函数被其他类继承的概念。
  •     封装: 它是将数据和函数相结合的一类内的方法。数据可以在类的外部与函数的帮助下进行访问。它也被称为数据抽象。

lua的oop

在lua中实现面向对象与表和lua的第一类函数。通过将函数和相关数据插入表中形成一个对象。继承可以在metatables的帮助下来实现,提供了一个查找机制不存在的函数(方法)和在父对象字段。

在lua表有这样的状态和标识对象,它是独立于值的特性。两个对象(表),具有相同的值但在不同的对象,而一个对象可以具有在不同的值,但它始终是相同的对象。就像对象表中有一个生命周期,独立创建或被创建。
一个真实世界的例子

面向对象的概念是广泛的,但要明白和获取最大利益。

让我们考虑一个简单的数学例子。我们经常会遇到,我们工作在不同的形状像圆形,长方形和正方形的情况。

形状可以有一个共同的属性区。因此,我们可以从与共同属性区域的基础对象形状扩展的其它形状。每个形状都可以有其自己的性质和功能类似的矩形可以有属性的长度,宽度,面积作为其属性,printarea中和calculatearea作为它的函数。
创建一个简单的类

一个简单的类实现矩形三个属性面积,长度和宽度如下所示。它也有一个printarea中功能打印所计算的面积。

创建对象

创建对象是类的实例分配存储器的过程。每个对象具有它自己的存储器和共享公用类数据。

访问属性

在类中用点 . 操作符,如下图所示,可以访问属性

访问成员函数

使用冒号运算符,如下图所示,可以访问对象成员函数。

存储器被分配和初始值被设定。初始化过程可以比在其它面向对象的语言构造。它只是一项功能设定值,如上图所示。
完整例子

让我们来看看使用面向对象的lua中一个完整的例子。

当运行上面的程序,会得到如下的输出。

lua的继承

继承是扩展形状简单的基本对象,以矩形,正方形等的处理。它通常用于在真实世界中的共享和扩展的基本性质和功能。

让我们看一个简单的类扩展。有一个类,如下图所示。

 

我们可以扩展的形状为正方形类如下所示。

重载基础函数

我们可以重载基类函数使用基类中的函数,而不是派生类它自己再实现,如下图所示

继承完整的例子

lua中我们可以扩展的简单类实现,如上图所示metatables另一个新的方法。所有的成员变量和基类的函数被保留在派生类。

当我们运行上面的程序,会得到下面的输出。

在上面的例子中,我们创建了两个派生类rectangle和square从基类square。因此能够在此改变基类的功能的派生类。在本实现例子中,派生类会取代函数printarea。

(0)

相关文章:

  • 使用Lua编写Nginx服务器的认证模块的方法

    使用Lua编写Nginx服务器的认证模块的方法

    过去两天里,我解决了一个非常有趣的问题。我用一个nginx服务器作为代理,需要能够向其中添加一个认证层,使其能够使用外部的认证源(比如某个web应用)来进行验证... [阅读全文]
  • 详解Lua中的元表概念

    详解Lua中的元表概念

    元表是一个表,有助于改变它连接到一个密钥集和相关的元方法的帮助下表的行为。这些元方法是强大的lua功能,如: 更改/添加功能,以运算符表 查看metat... [阅读全文]
  • Lua和Nginx结合使用的超级指南

    Lua和Nginx结合使用的超级指南

    nginx作为api代理有很多原因说明你为什使用nginx作为api代理。首先因为他是开源的;其次,nginx有大量的安装基础,他背后有一个强大的社区支持,在性... [阅读全文]
  • 在Lua中使用模块的基础教程

    在Lua中使用模块的基础教程

    什么是模块?模块是一个像,可以使用需要加载并有包含表中的单个全局命名的库。该模块可包含若干函数和变量。所有这些函数和变量被包裹在以它作为一个命名空间的表。也是一... [阅读全文]
  • Lua table中安全移除元素的方法

    Lua table中安全移除元素的方法

    在lua中,table如何安全的移除元素这点挺重要,因为如果不小心,会没有正确的移除,造成内存泄漏。引子比如有些朋友常常这么做,大家看有啥问题将test表中的偶... [阅读全文]
  • 浅析Lua中的迭代器

    浅析Lua中的迭代器

    迭代器是一种结构,使能够遍历所谓的集合或容器中的元素。在lua中,这些集合通常是指那些用于创建各种数据结构,如数组表。一般对于迭代器一个通用的迭代器提供的键值对... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com