Cocos2d-Lua之面向对象的继承
来源:互联网 发布:java异步日志系统 编辑:程序博客网 时间:2024/05/19 01:12
--UsrClass.lua文件local Usr = class("Usr")--id,name,age分别为Usr.id = 1Usr.name = "张三"Usr.age = 20function Usr:ctor(name, num, age) self.name = name self.id = num self.age = age print("Usr中的构造")endfunction Usr:getinfo() print("姓名: " .. self.name .. " id:" .. self.id .. " 年龄:" .. self.age)endreturn Usr
--Teacher.lua文件local User = require("app.scenes.UsrClass")local Teacher = class("Teacher", User) --Teacher继承了User类return Teacher
--test.lua文件local teacherclass = require("app.scenes.Teacher")local t1 = teacherclass.new("洪七公", 201, 50)t1:getinfo()
输出结果:
teacher继承了usr中的所有成员变量和成员函数,这跟C++中的继承是一样的,只不过不存在访问权限的问题。
--Teacher.lua文件local User = require("app.scenes.UsrClass")local Teacher = class("Teacher", User)function Teacher:ctor(name, id, age) self.name = name self.id = id self.age = age print("Teacher中的构造函数")endreturn Teacher
这里写入Teacher类的构造函数,再运行一下:
发现这里运行的就是Teacher类中的构造函数,父类Usr中的构造函数完全被覆盖了,如果也想运行父类Usr中的构造函数,改成这样:
--Teacher.lua文件local User = require("app.scenes.UsrClass")local Teacher = class("Teacher", User)function Teacher:ctor(name, id, age) self.super:ctor(name, id, age) print("Teacher中的构造函数")endreturn Teacher
输出结果:
这样就可以把子类父类的构造函数都调用了。
print(self.__cname)
利用这句可以看到到底是哪个类调用的:
--Usr类function Usr:getinfo() print(self.__cname) print("姓名: " .. self.name .. " id:" .. self.id .. " 年龄:" .. self.age)end
在Usr类的getinfo函数中,加入这句,运行结果:
可以看到打印出来Teacher,实际是由Teacher调用的。
0 0
- Cocos2d-Lua之面向对象的继承
- Cocos2d-Lua之面向对象的封装
- Lua 面向对象之继承的实现
- Lua 之 面向对象 -- 继承
- lua的面向对象之封装、继承、多态
- 【cocos2d-x3.2游戏开发】 lua 类, 继承, 面向对象
- 【cocos2d-x3.2游戏开发】 lua 类, 继承, 面向对象
- Cocos2d-x Lua游戏开发之Lua 面向对象编程
- cocos2d-x lua 面向对象
- lua 类, 继承, 面向对象
- lua 类, 继承, 面向对象
- lua 类, 继承, 面向对象
- lua面向对象、继承、多态
- Lua 中的面向对象编程之封装和继承
- Lua学习之10:面向对象与继承
- 【Lua】Lua之面向对象
- 【cocos2d-x 3.5】Lua的简单面向对象
- Lua面向对象代码(继承和多态)的读后感
- 子类、父类之间实现函数重载
- PHP面向对象接口部分基础代码
- thinkphp3.2【框架执行流程分析】
- PHP面向对象静态变量
- 理解虚基类、虚函数与纯虚函数的概念
- Cocos2d-Lua之面向对象的继承
- Android之DialogFragment
- 在OpenWrt上安装DNSCrypt
- [hdu1596] find the safest road
- sql server 连接不上的几种解决
- C++面向对象基础知识详解三
- 使用strapdown.js解析markdown
- Skia深入分析7——区域解码
- 多种方法给页面设置标题,最容易忽略清单配置文件