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中的面向对象相关推荐
- Lua——Lua中的面向对象
开始 Lua本身并不是面向对象的语言.不存在类的概念.Lua官网16.1 – Classes中有如下描述. Lua does not have the concept of class 但我们可以在L ...
- Lua中的面向对象实现探讨
Lua中,面向对向是用元表这种机制来实现的.元表是个很"道家"的机制,很深遂,很强大,里面有一些基本概念比较难理解透彻.不过,只有完全理解了元表,才能对Lua的面向对象使用自如,才 ...
- 脚本语言lua笔记(5)c++调用lua
首先搭建环境,使用vs2010的c++开发工具,lua源码包,可以去官方下载最新源码包,我采用的是lua-5.1.5的版本.好了,开始配环境. 第一步: 下载源码包后,解压lua-5.1.5源码包到硬 ...
- java 是脚本语言_java中使用脚本语言
1. 脚本语言的特点 * 灵活:脚本语言一般都是动态类型,可以不用声明变量类型而直接使用,也可以在运行期改变类型. * 便捷:脚本语言是一种解释型语言,不需要编译成二进制代码,也不需要向java一样生 ...
- fceux源码解析_FCEUX金手指加强版 - 使用Lua脚本语言编写FC/NES金手指脚本
一直觉得大部分的FC/NES模拟器的作弊码金手指不是那么方便使用, 比如魂斗罗1代, 玩家的武器可以通过修改0xAA的值来改变: 0x11为M弹(重机枪),0x12为F弹(圈圈),0x13为S弹(散弹 ...
- Java7 一些新特性及脚本语言支持API--笔记
1.switch条件语句中可以加入字符串了,实现方法是利用了字符串的hashcode()值作业真正的值 2.增加了一种可以在字面量中使用的进制,二进制,通过在数字前面加"0b"或& ...
- 随笔二——JavaScript脚本语言
模块三 JavaScript脚本语言 JavaScript(简称"JS")由Netscape公司的Brendan Eich在网景导航者浏览器上首次设计实现而成.为了确保不同的浏览器 ...
- python做脚本语言要了解什么_你真的了解Python吗?本文可以让你对Python了解更深入...
人们为什么使用Python? 之所以选择Python的主要因素有以下几个方面:软件质量:在很大程度上,Python更注重可读性.一致性和软件质量,从而与脚本语言世界中的其他工具区别开发.此外,Pyth ...
- c调用lua脚本语言入门,Lua脚本语言入门及魔兽争霸中的Lua函数调用
在这篇文章中,我想向大家介绍如何进行Lua程序设计及魔兽争霸中的Lua函数调用.我假设大家都学过至少一门编程语言,比如Basic或C,特别是C.因为Lua的***用途是在宿主程序中作为脚本使用的. L ...
最新文章
- 提升Kaggle模型的实用小技巧!
- AliSQL 20170716版本发布 Invisible Indexes 功能和 SELECT FROM UPDATE 语法
- sqlmap使用_sqlmap于sql labs下使用
- 搭建微信令牌中控服务器,使用ThinkJs搭建微信中控服务的实现方法
- Flutter ScrollView 滑动组件
- 马化腾王健林一起逛街 买了一杯茉莉茶却忘了拿走
- BZOJ2689 : 堡垒
- 在QT中CXDVA视频组件的例子
- 计算机点击右键出现错误,电脑右键个性化打不开了怎么办
- Linux内核学习路线 有入门到深入
- Delphi中实现ListView滚动条的换肤方案
- NTP授时服务器(网络校时服务器)对医院信息化建设的重要
- 如果读书无用,那为什么还要读书
- Java SSL实现使用详解
- Simon写作翻转课笔记
- 中国猎头公司排名 (前十)
- Python的特殊属性和用法
- Transformers from Scratch(从零开始的Transformers )翻译学习【更新中】
- 网站关键词排名优化怎么做才能让排名更高?
- 国企工资1万辞职去1.5万月薪私企,不想“内卷”,过来人:请三思
热门文章
- python ddt mysql_Python数据驱动DDT的应用
- aac文件损坏修复软件_SysTools Outlook Recovery Tool : 修复损坏的Outlook PST文件的先进的软件...
- 观山湖区计算机培训班学校,2020年观山湖区教育系统办公室主任培训顺利开班...
- CISP人才年薪30W起步优先考虑它
- Serverless 架构模式及演进
- 课程升级 | 极速构建知识体系,即学即用 Serverless
- 5 项大奖,70 项满分!阿里云全方位引领云原生技术升级
- Go 开发关键技术指南 | 敢问路在何方?(内含超全知识大图)
- 云原生生态周报 Vol. 15 | K8s 安全审计报告发布
- charset参数 sqluldr2_SQLULDR2的安全保密功能