Cocos2d-x 脚本语言Lua中的面向对象
来源:互联网 发布:mac无法更新系统 编辑:程序博客网 时间:2024/05/18 02:30
Cocos2d-x 脚本语言Lua中的面向对象
面向对象不是针对某一门语言,而是一种思想,在面向过程的语言也可以使用面向对象的思想来进行编程。在Lua中,并没有面向对象的概念存在,没有类的定义和子类的定义,但同样在Lua中可以利用面向对象的思想来实现面向对象的类继承。
一、复制表的方式面向对象
--Lua中的面向对象--[[ 复制表方式面向对象 参数为一张表,通过遍历这张表取值,赋给一张空表,最后返回新建的表,来达到克隆表]]function clone(tab)local ins = {}for key, var in pairs(tab) doins[key] = varendreturn insend--[[ 复制表 第一参数是目标表,第二个参数是需要复制的表 通过遍历tab来取值将它赋值到目标表中]]function copy(dist,tab)for key, var in pairs(tab) dodist[key] = varendend-- 定义一张空表,相当于一个类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 selfend--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 selfendMan.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 = nameend self.sayHi = function ()print("Hello "..self.name)end --调用初始化init()return selfend--实例化一个对象local p = People("ZhangSan")p:sayHi()--函数闭包的形式实现类继承function Man(name)local self = People(name)--local function init()----endself.sayHello = function ()print("Hi "..self.name)endreturn selfendlocal m = Man("Lisi")--m:sayHello()m:sayHi()
以上两种方式均可实现面向对象,目测第二种方法更为简洁一些,具体使用按照个人的喜好来做。
6 0
- Cocos2d-x 脚本语言Lua中的面向对象
- Cocos2d-x 脚本语言Lua中的面向对象
- cocos2d-x lua 面向对象
- Cocos2d-x 脚本语言Lua介绍
- COCOS2D-X Lua面向对象编程
- COCOS2D-X Lua 面向对象编程
- COCOS2D-X Lua 面向对象编程
- COCOS2D-X Lua面向对象编程
- Cocos2d-x Lua游戏开发之Lua 面向对象编程
- Cocos2d-x 脚本语言Lua基本语法
- Cocos2d-x 脚本语言Lua的使用
- Cocos2d-X Lua脚本语言简介(一)
- Cocos2d-x 脚本语言Lua的使用
- 【cocos2d-x 3.5】Lua的简单面向对象
- lua中的面向对象
- lua中的面向对象
- Lua中的面向对象
- lua中的面向对象
- 管道流
- CUDA笔记2-循环展开
- 项目总结——深入浅出socket网络编程 (转)
- cocos2d-x 源码分析 : Ref (CCObject) 源码分析 cocos2d-x内存管理策略
- fedora 下安装 memcached
- Cocos2d-x 脚本语言Lua中的面向对象
- Winphone基于事件编程
- android之VideoView和视频播放View的扩展
- Win8 WIFI热点分享
- Android使用VideoView播放网络视频
- ruby 实例变量 和属性
- java文件和文件夹的增删复制
- Android View相关介绍
- 【JAVA学习】读取文件getClassLoader().getResourceAsStream("xxx")