Cocos2d-Lua之面向对象的封装
2016-06-18 09:40
429 查看
Lua作为一门脚本语言,不同于C++,java这类的高级语言,Lua中的面向对象只能通过封装与继承(只能是单继承)实现,并没有多态,连重载都不支持的Lua拿什么资本支持多态呢。
先说一下类的格式:
举个例子:
输出结果:
构造对象:
在成员函数中访问自己的成员时要:
如果用下面这种格式:
这就相当于C++中的静态成员变量,对所有对象是公用的。
要访问self的成员,就必须用:
这种方式访问。
如果用:
就只能访问只访问静态成员变量的函数,也可以叫静态成员函数。
下面都改成静态的试试看:
输出结果:
可以看到在构造函数里改成静态成员变量之后,即使usr1自定义了姓名,编号和年龄,usr2一定义就覆盖了原来的,因为修改的公共的成员,而不再是个人的了。
先说一下类的格式:
local 类名 = class("类名") --类内部定义的成员函数和成员变量 return 类名
举个例子:
--UsrClass.lua文件 local Usr = class("Usr") --id,name,age分别为类Usr的成员变量 Usr.id = 1 Usr.name = "张三" Usr.age = 20 --ctor是必须遵守的构造函数的名称 function Usr:ctor(name, num, age) self.name = name self.id = num self.age = age end --类Usr自定义的成员函数 function Usr:getinfo() print("姓名: " .. self.name .. " id:" .. self.id .. "年龄:" .. self.age) end return Usr
--test.lua文件 local UsrClass = require("app.scenes.UsrClass") local usr1 = UsrClass.new("郭靖", 101, 18) local usr2= UsrClass.new("黄蓉", 102, 16) usr1:getinfo() usr2:getinfo()
输出结果:
构造对象:
类.new()
在成员函数中访问自己的成员时要:
self.成员变量 --前加self进行访问
如果用下面这种格式:
类名.成员变量
这就相当于C++中的静态成员变量,对所有对象是公用的。
要访问self的成员,就必须用:
对象:成员函数
这种方式访问。
如果用:
对象.成员函数
就只能访问只访问静态成员变量的函数,也可以叫静态成员函数。
下面都改成静态的试试看:
--UsrClass.lua文件 local Usr = class("Usr") --id,name,age分别为类Usr的成员变量 Usr.id = 1 Usr.name = "张三" Usr.age = 20 --ctor是必须遵守的构造函数的名称 function Usr:ctor(name, num, age) Usr.name = name Usr.id = num Usr.age = age end --类Usr自定义的成员函数 function Usr:getinfo() print("姓名: " .. self.name .. " id:" .. self.id .. "年龄:" .. self.age) end return Usr
--test.lua文件 local UsrClass = require("app.scenes.UsrClass") local usr1 = UsrClass.new("郭靖", 101, 18) local usr2= UsrClass.new("黄蓉", 102, 16) usr1:getinfo() usr2:getinfo()
输出结果:
可以看到在构造函数里改成静态成员变量之后,即使usr1自定义了姓名,编号和年龄,usr2一定义就覆盖了原来的,因为修改的公共的成员,而不再是个人的了。
相关文章推荐
- Cocos2d-Lua之闭包
- Cocos2d-Lua之协同程序
- TexturePacker 4.X 在Cocos2d-x 3.x 中帧动画实现(官方文档)
- 小水滴所理解的Cocos2dx内存管理机制
- Cocos2d-Lua之异常处理
- Cocos2d-Lua之文件操作
- Cocos2d-Lua之math库
- Cocos2d-Lua之随机数
- cocos2dx 渲染任意形状贴图
- 【Cocos2d-x游戏开发】解决Cocos2d-x中文乱码的三种方法
- windows cocos2d-x OpenGL error 0x0506 quick-cocos2d-x\lib\cocos2d-x\cocos2dx\sprite_nodes\ccsprite.c
- Cocos2d-Lua之string
- cocos2dx 3.8加载cocos studio csb文件
- cocos2D开发游戏
- Cocos2d-Lua之table的排序
- Cocos2d-Lua之Lua文件的加载与运行
- cocos2d-x面试题合集
- CocosPosd安装,错误
- Cocos2d-Lua之table的删除与插入
- cocos2dx 一张图片的闪烁的动画