Cocos2d-x 脚本语言Lua中的面向对象
面向对象不是针对某一门语言,而是一种思想。在面向过程的语言也能够使用面向对象的思想来进行编程。

在Lua中,并没有面向对象的概念存在,没有类的定义和子类的定义。但相同在Lua中能够利用面向对象的思想来实现面向对象的类继承。

一、复制表的方式面向对象
--Lua中的面向对象
--[[复制表方式面向对象參数为一张表。通过遍历这张表取值,赋给一张空表,最后返回新建的表。来达到克隆表
]]
function clone(tab)local ins = {}for key, var in pairs(tab) doins[key] = varendreturn ins
end--[[复制表第一參数是目标表,第二个參数是须要复制的表通过遍历tab来取值将它赋值到目标表中
]]
function copy(dist,tab)for key, var in pairs(tab) dodist[key] = varend
end-- 定义一张空表,相当于一个类
People ={}--function People.sayHi()
--  print("People say hi")
--end-- 定义类中的方法sayHi,传入一个self參数
People.sayHi = function (self)print("People say hi:"..self.name)
end-- 定义一个new方法,传进一个name參数,通过克隆People这张表来生成一个对象
-- 相当于类其中的一个构造方法
People.new = function (name)local self = clone(People)self.name = namereturn self
end--local p = clone(People)
--p.sayHi()
--生成一个新的对象
local p = People.new("ZhangSan")
--p.sayHi(p)
--p:sayHi()--定义一张空表,也代表一个类
Man = {}
--Man中的构造方法。实现Lua中类的继承
Man.new = function (name)local self = People.new(name)--附加Man中全部的键值对到People中的实例中去copy(self,Man)return self
endMan.sayHello = function ()print("Man say hello")
end--重写父类People中的sayHi方法
Man.sayHi = function (self)print("Man sayHi "..self.name)
end--创建Man的一个实例
local m = Man.new("Lisi")
m:sayHi()

以上代码已经有具体的凝视。读者须要细致阅读这里所给出的样例。

二、使用函数闭包的形式实现面向对象
--以函数闭包的形式实现面向对象--定义一个方法,函数闭包实现一个类的概念
function People(name)local self = {}--初始化方法,私有的local function init()self.name = nameendself.sayHi = function ()print("Hello "..self.name)end--调用初始化init()return self
end--实例化一个对象
local p = People("ZhangSan")
p:sayHi()--函数闭包的形式实现类继承
function Man(name)local self = People(name)--  local function init()
--
--  endself.sayHello = function ()print("Hi "..self.name)endreturn self
endlocal m = Man("Lisi")
--m:sayHello()
m:sayHi()

以上两种方式均可实现面向对象。目測另外一种方法更为简洁一些,具体使用依照个人的喜好来做。

转载于:https://www.cnblogs.com/mengfanrong/p/5140406.html

Cocos2d-x 脚本语言Lua中的面向对象相关推荐

  1. Lua——Lua中的面向对象

    开始 Lua本身并不是面向对象的语言.不存在类的概念.Lua官网16.1 – Classes中有如下描述. Lua does not have the concept of class 但我们可以在L ...

  2. Lua中的面向对象实现探讨

    Lua中,面向对向是用元表这种机制来实现的.元表是个很"道家"的机制,很深遂,很强大,里面有一些基本概念比较难理解透彻.不过,只有完全理解了元表,才能对Lua的面向对象使用自如,才 ...

  3. 脚本语言lua笔记(5)c++调用lua

    首先搭建环境,使用vs2010的c++开发工具,lua源码包,可以去官方下载最新源码包,我采用的是lua-5.1.5的版本.好了,开始配环境. 第一步: 下载源码包后,解压lua-5.1.5源码包到硬 ...

  4. java 是脚本语言_java中使用脚本语言

    1. 脚本语言的特点 * 灵活:脚本语言一般都是动态类型,可以不用声明变量类型而直接使用,也可以在运行期改变类型. * 便捷:脚本语言是一种解释型语言,不需要编译成二进制代码,也不需要向java一样生 ...

  5. fceux源码解析_FCEUX金手指加强版 - 使用Lua脚本语言编写FC/NES金手指脚本

    一直觉得大部分的FC/NES模拟器的作弊码金手指不是那么方便使用, 比如魂斗罗1代, 玩家的武器可以通过修改0xAA的值来改变: 0x11为M弹(重机枪),0x12为F弹(圈圈),0x13为S弹(散弹 ...

  6. Java7 一些新特性及脚本语言支持API--笔记

    1.switch条件语句中可以加入字符串了,实现方法是利用了字符串的hashcode()值作业真正的值 2.增加了一种可以在字面量中使用的进制,二进制,通过在数字前面加"0b"或& ...

  7. 随笔二——JavaScript脚本语言

    模块三 JavaScript脚本语言 JavaScript(简称"JS")由Netscape公司的Brendan Eich在网景导航者浏览器上首次设计实现而成.为了确保不同的浏览器 ...

  8. python做脚本语言要了解什么_你真的了解Python吗?本文可以让你对Python了解更深入...

    人们为什么使用Python? 之所以选择Python的主要因素有以下几个方面:软件质量:在很大程度上,Python更注重可读性.一致性和软件质量,从而与脚本语言世界中的其他工具区别开发.此外,Pyth ...

  9. c调用lua脚本语言入门,Lua脚本语言入门及魔兽争霸中的Lua函数调用

    在这篇文章中,我想向大家介绍如何进行Lua程序设计及魔兽争霸中的Lua函数调用.我假设大家都学过至少一门编程语言,比如Basic或C,特别是C.因为Lua的***用途是在宿主程序中作为脚本使用的. L ...

最新文章

  1. 提升Kaggle模型的实用小技巧!
  2. AliSQL 20170716版本发布 Invisible Indexes 功能和 SELECT FROM UPDATE 语法
  3. sqlmap使用_sqlmap于sql labs下使用
  4. 搭建微信令牌中控服务器,使用ThinkJs搭建微信中控服务的实现方法
  5. Flutter ScrollView 滑动组件
  6. 马化腾王健林一起逛街 买了一杯茉莉茶却忘了拿走
  7. BZOJ2689 : 堡垒
  8. 在QT中CXDVA视频组件的例子
  9. 计算机点击右键出现错误,电脑右键个性化打不开了怎么办
  10. Linux内核学习路线 有入门到深入
  11. Delphi中实现ListView滚动条的换肤方案
  12. NTP授时服务器(网络校时服务器)对医院信息化建设的重要
  13. 如果读书无用,那为什么还要读书
  14. Java SSL实现使用详解
  15. Simon写作翻转课笔记
  16. 中国猎头公司排名 (前十)
  17. Python的特殊属性和用法
  18. Transformers from Scratch(从零开始的Transformers )翻译学习【更新中】
  19. 网站关键词排名优化怎么做才能让排名更高?
  20. 国企工资1万辞职去1.5万月薪私企,不想“内卷”,过来人:请三思

热门文章

  1. python ddt mysql_Python数据驱动DDT的应用
  2. aac文件损坏修复软件_SysTools Outlook Recovery Tool : 修复损坏的Outlook PST文件的先进的软件...
  3. 观山湖区计算机培训班学校,2020年观山湖区教育系统办公室主任培训顺利开班...
  4. CISP人才年薪30W起步优先考虑它
  5. Serverless 架构模式及演进
  6. 课程升级 | 极速构建知识体系,即学即用 Serverless
  7. 5 项大奖,70 项满分!阿里云全方位引领云原生技术升级
  8. Go 开发关键技术指南 | 敢问路在何方?(内含超全知识大图)
  9. 云原生生态周报 Vol. 15 | K8s 安全审计报告发布
  10. charset参数 sqluldr2_SQLULDR2的安全保密功能