当前位置: 首页 > news >正文

运维网站制作富锦网站

运维网站制作,富锦网站,wordpress优化谷歌,专业的网站设计制作Lua实现面向对象 面向对象核心三要素Lua面向对象大致原理面向对象示例继承与多态示例 面向对象核心三要素 1.封装:对一个事物的抽象为一些属性和行为动作的集合,封装将属性和行为动作(操作数据的方法)绑定在一起,并隐藏…

Lua实现面向对象

  • 面向对象核心三要素
  • Lua面向对象大致原理
    • 面向对象示例
    • 继承与多态示例

面向对象核心三要素

1.封装:对一个事物的抽象为一些属性和行为动作的集合,封装将属性和行为动作(操作数据的方法)绑定在一起,并隐藏对象的内部实现细节,只暴露给外部部分接口。
2. 继承是一种机制,允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码重用和扩展。
3. 多态允许一个接口或方法在不同类的实例上有不同的表现形式。通过多态,可以编写更通用、更灵活的代码。

Lua面向对象大致原理

在 Lua 中,面向对象编程(OOP)的概念是通过表(table)和元表(metatable)来实现的。Lua 并没有内建的类系统,但通过灵活的元表机制,可以实现类、继承和多态等 OOP 特性。

面向对象示例

-- 下面通过实现一个简易的链表功能,来展示Lua实现面向对象的大致过程
local Node = {}
Node.__index = Node
Node.new = function(value)return setmetatable({value = value,next = nil},Node)
endlocal LinkList = {}
LinkList.__index = LinkList
LinkList.new = function()return setmetatable({head = nil},LinkList)
end
function LinkList:Insert(value)local node = Node.new(value)if not self.head thenself.head = nodeelselocal curNode = self.headwhile curNode.next docurNode = curNode.nextendcurNode.next = nodeend
endfunction LinkList:InsertByTable(valuetbl)for k,v in ipairs(valuetbl) dolocal node = Node.new(v)if not self.head thenself.head = nodeelselocal curNode = self.headwhile curNode.next docurNode = curNode.nextendcurNode.next = nodeendend
endfunction LinkList:Print()if not self.head thenprint("List has no node")elselocal curNode = self.headwhile curNode doprint("Cur Node Value:",curNode.value)curNode = curNode.nextendend
endfunction LinkList:Reverse()if not self.head thenprint("List has no node")elselocal preNode = nillocal curNode = self.headwhile curNode dolocal nextNode = curNode.nextcurNode.next = preNodepreNode = curNodecurNode = nextNodeendself.head = preNodeend
endlocal l = LinkList.new()
--l:Insert(2)
--l:Insert(4)
--l:Insert(5)
--l:Insert(1)
--l:Insert(0)
l:InsertByTable({1,2,3,4,"a"})
l:Print()
print("---------------------")
l:Reverse()
l:Print()

继承与多态示例

-- 定义一个基类
local Shape = {}
Shape.__index = Shapefunction Shape:new()local instance = setmetatable({}, self)return instance
endfunction Shape:area()return 0
end-- 定义一个子类,继承自 Shape
local Rectangle = setmetatable({}, Shape)
Rectangle.__index = Rectanglefunction Rectangle:new(width, height)local instance = Shape.new(self)instance.width = widthinstance.height = heightreturn instance
endfunction Rectangle:area()return self.width * self.height
end-- 定义另一个子类,继承自 Shape
local Circle = setmetatable({}, Shape)
Circle.__index = Circlefunction Circle:new(radius)local instance = Shape.new(self)instance.radius = radiusreturn instance
endfunction Circle:area()return math.pi * self.radius ^ 2
end-- 创建子类的实例,并展示多态行为
local shapes = {Rectangle:new(3, 4), Circle:new(5)}for _, shape in ipairs(shapes) doprint("Area:", shape:area())  -- 分别输出矩形和圆的面积
end
http://www.yayakq.cn/news/328451/

相关文章:

  • 企业宣传网站公司男子做网站
  • 一般网站维护费用网站建设价格西安
  • 快速搭建网站的工具网迎客 网站建设
  • 济南网站建设公司排行高端手机网站 制作公司
  • 深圳福田商城网站建设怎样查网站有没有做CDN加速
  • 网站建设 业务板块名称wordpress代码高亮显示
  • 中卫市建设网站wordpress环保公司主题
  • 做影视网站对服务器要求网站空间邮箱
  • 摄影摄像网站建设广州市市场监督管理局
  • 重庆企业网站推广流程怎么做网站推广云浮
  • 深圳建设网站公司排名网站做的二维码失效了
  • 网站维护工作内容有什么国家企业信用信息公示系统(安徽)
  • 山东站群网站建设小程序开发教程
  • 做网站公司的介绍wordpress文章分栏
  • 做pos机网站有必要么wordpress一键生成
  • 校园网站建设情况说明书企业网站的基本内容有哪些
  • 做ppt高手_一定要常去这八个网站阿里云网站目录
  • 越秀做网站手机网站网页开发教程
  • 电子政务网站开发和设计的关系吉林市做网站公司
  • 黄冈做网站技术支持的wordpress和哪个好用吗
  • 所得税汇算清缴在哪个网站做网站开发中背景图片怎么弄全屏
  • 房产网站建设的功能建设厅电工证查询网站官方网
  • 网站备案需要注意什么沧州市做网站
  • 广东中山网站建设 光龙网站如何做推广
  • 马鞍山 网站建设 有限公司网络优化推广公司哪家好
  • 昆明网站搜索引擎优化网页设计与制作教程第5版答案
  • 网站开发所需技能WordPress阅读量 缓存
  • 网站开发用mvc多吗厦门seo建站
  • 广州网站建设首选快优php初学者网站
  • 制作一个网站的流程南京医疗网站建设