Cocos2d-x 脚本语言Lua中的面向对象

Cocos2d-x 脚本语言Lua中的面向对象,第1张

概述面向对象不是针对某一门语言,而是一种思想,在面向过程的语言也可以使用面向对象的思想来进行编程。在Lua中,并没有面向对象的概念存在,没有类的定义和子类的定义,但同样在Lua中可以利用面向对象的思想来实现面向对象的类继承。 一、复制表的方式面向对象 [javascript]  view plain copy --Lua中的面向对象   --[[     复制表方式面向对象     参数为一张表,通过 面向对象不是针对某一门语言,而是一种思想,在面向过程的语言也可以使用面向对象的思想来进行编程。在Lua中,并没有面向对象的概念存在,没有类的定义和子类的定义,但同样在Lua中可以利用面向对象的思想来实现面向对象的类继承。
一、复制表的方式面向对象 [JavaScript] view plain copy --Lua中的面向对象 --[[ 复制表方式面向对象 参数为一张表,通过遍历这张表取值,赋给一张空表,最后返回新建的表,来达到克隆表 ]] functionclone(tab) localins={} forkey,varinpairs(tab)do ins[key]=var end returnins 复制表 第一参数是目标表,第二个参数是需要复制的表 通过遍历tab来取值将它赋值到目标表中 ]] functioncopy(dist,tab) dist[key]= end --定义一张空表,相当于一个类 People={} --functionPeople.sayHi() --print("Peoplesayhi") --end --定义类中的方法sayHi,传入一个self参数 People.sayHi=function(self) print("Peoplesayhi:"..self.name) --定义一个new方法,传进一个name参数,通过克隆People这张表来生成一个对象 --相当于类当中的一个构造方法 People.new=function(name) localself=clone(People) self.name=name returnself --localp=clone(People) --p.sayHi() --生成一个新的对象 localp=People.new("ZhangSan") --p.sayHi(p) --p:sayHi() --定义一张空表,也代表一个类 Man={} --Man中的构造方法,实现Lua中类的继承 Man. localself=People.new(name) --附加Man中所有的键值对到People中的实例中去 copy(self,Man) Man.sayHello=function() print("Mansayhello") --重写父类People中的sayHi方法 Man.sayHi= print("MansayHi"..self.name) --创建Man的一个实例 localm=Man.new("lisi") m:sayHi()
以上代码已经有详细的注释,读者需要仔细阅读这里所给出的例子。
二、使用函数闭包的形式实现面向对象 --以函数闭包的形式实现面向对象 --定义一个方法,函数闭包实现一个类的概念 function
People(name)
localself={} --初始化方法,私有的 localfunctioninit() self.name=name self.sayHi=function() print("Hello"..self.name) --调用初始化 init() --实例化一个对象 localp=People("ZhangSan") p:sayHi() --函数闭包的形式实现类继承 function
Man(name)
localself=People(name) --localfunctioninit() -- self.sayHello= print("Hi"..self.name) returnself localm=Man("lisi") --m:sayHello() m:sayHi() 总结

以上是内存溢出为你收集整理的Cocos2d-x 脚本语言Lua中的面向对象全部内容,希望文章能够帮你解决Cocos2d-x 脚本语言Lua中的面向对象所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1001659.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存