Cocos2d-Lua之面向对象的封装
来源:互联网 发布:淘宝店铺公告模板 编辑:程序博客网 时间:2024/05/19 20:41
Lua作为一门脚本语言,不同于C++,java这类的高级语言,Lua中的面向对象只能通过封装与继承(只能是单继承)实现,并没有多态,连重载都不支持的Lua拿什么资本支持多态呢。
先说一下类的格式:
local 类名 = class("类名")--类内部定义的成员函数和成员变量return 类名
举个例子:
--UsrClass.lua文件local Usr = class("Usr")--id,name,age分别为类Usr的成员变量Usr.id = 1Usr.name = "张三"Usr.age = 20--ctor是必须遵守的构造函数的名称function Usr:ctor(name, num, age) self.name = name self.id = num self.age = ageend--类Usr自定义的成员函数function Usr:getinfo() print("姓名: " .. self.name .. " id:" .. self.id .. "年龄:" .. self.age)endreturn 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 = 1Usr.name = "张三"Usr.age = 20--ctor是必须遵守的构造函数的名称function Usr:ctor(name, num, age) Usr.name = name Usr.id = num Usr.age = ageend--类Usr自定义的成员函数function Usr:getinfo() print("姓名: " .. self.name .. " id:" .. self.id .. "年龄:" .. self.age)endreturn 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一定义就覆盖了原来的,因为修改的公共的成员,而不再是个人的了。
0 0
- Cocos2d-Lua之面向对象的封装
- Cocos2d-Lua之面向对象的继承
- Lua的面向对象封装
- lua的面向对象之封装、继承、多态
- Cocos2d-x lua 面向对象封装的一个简单弹出框
- lua面向对象的2种私密性封装
- Cocos2d-x Lua游戏开发之Lua 面向对象编程
- cocos2d-x lua 面向对象
- Lua 中的面向对象编程之封装和继承
- 【Lua】Lua之面向对象
- LuaOO (Lua与C++交互的面向对象封装)
- LUA面向对象程序设计(六)数据的封装
- Lua 面向对象编程 类的封装与继承
- cocos2dx-lua中实现面向对象的封装继承
- 【cocos2d-x 3.5】Lua的简单面向对象
- Lua 面向对象之继承的实现
- 面向对象之封装
- 面向对象之封装
- Android ABI
- 组合求和(C++)
- error C2361: initialization of 'rect' is skipped by 'default' label
- iOS---使用CAEmitterLayer制作发射粒子的特效
- 数据连接池
- Cocos2d-Lua之面向对象的封装
- android中的sqlite查询数据去掉重复值
- linux下打开、关闭tomcat,实时查看tomcat运行日志
- 学习笔记
- Python day01周
- linux CentOS 6忘记密码的解决办法
- SQL查询关键字位置并截取;查询重复;
- 工具之wireshark检测不到网卡的问题
- 1015. 德才论 (25)