代码的实现很简单,但是主要还是看看别人的quick2dx项目代码,然后自己思考下,学会总结。
模仿大牛的代码也很重要~~~~~
local Animal = {age = 3,gender = "male"}    --定义一个Animal的表function Animal:extend()   --定义表中的一个extend方法(继承机制的核心就是下面四行代码)local obj = obj or {} --if obj not nil return obj,else return {}setmetatable(obj, self)  --set self as obj's metatable 把Animal表自己作为元表放入obj表中self.__index = self     --索引__index是一个特殊的机制,只有设置了索引值,才能在子类调用父类方法时,能找到self(也就是Animal表)中的方法return obj  --返回带有元表的obj
endfunction Animal:run()  --定义父类的一个方法,作为动物,都可以跑的公共函数CCLuaLog("run is my gift~!")
endreturn Animal
local Horse = require("GameObject.Animal"):extend() --获取带有元表的objfunction Horse:eat()   --子类的方法CCLuaLog("eat grass..."..self.age)
endreturn Horse
    local pony = require("GameObject.Horse")pony:run()pony:eat()

tips:这些代码都是在公司学习时边学习边贴的代码,晚上或者有时间的时候再添上注释

转载于:https://www.cnblogs.com/vokie/p/3602086.html

Lua的继承(利用setmetatable)相关推荐

  1. cocos2d-x-lua基础系列教程四(lua多继承)

    lua - 多继承 1,模拟伪继承 新建extend_test.lua 新建extend_test.luasetmetable(a,b) b对象是a 对象的父类 a继承于bAccount = {num ...

  2. lua实现继承(lua程序设计21.7 练习21.2题)

    lua实现继承(lua程序设计21.7 练习21.2题) StackQueue = Stack:new() function StackQueue:insertBottom(v)table.inser ...

  3. lua的table+setfenv+setmetatable陷阱

    --file1.lua x  = funciton() print("this is x") end ------------- --file2.lua local t = {} ...

  4. JS学习笔记 原型链和利用原型实现继承

    原型链 原型链是一种关系,实例对象和原型对象之间的关系,关系是通过原型(__proto__)来联系的 实例对象中有__proto__,是对象,叫原型,不是标准的属性,浏览器使用,并且有的游览器不支持 ...

  5. 【Lua】常见知识点汇总(包含常见面试考点)

    版权声明:本文为CSDN博主「趁着头发多我想做游戏」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/weixi ...

  6. nginx lua编程要点,看完肯定会提高你的编码能力

    lua new table.new(narray, nhash) 两个参数分别代表table里是array还是hash的 table.new(10, 0) 或者 table.new(0, 10) 这样 ...

  7. Lua,让人惊叹的艺术!

    chrisxie的专栏 2008-09-30 12:09 Lua 对于国人来说可能还比较陌生,然而随着它在电子娱乐.网络娱乐界得到大量的应用,许多人也开始关注起它来. Lua 虽然是一门脚本语言,但麻 ...

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

    Cocos2d-x 脚本语言Lua中的面向对象 面向对象不是针对某一门语言,而是一种思想.在面向过程的语言也能够使用面向对象的思想来进行编程. 在Lua中,并没有面向对象的概念存在,没有类的定义和子类 ...

  9. [转载]Lua脚本与C++交互

    Lua脚本在C++下的舞步(入门指引)(转) Lua脚本在C++下的舞步(一)(入门指引) 转帖来自:http://www.acejoy.com/bbs/viewthread.php?tid=1931 ...

最新文章

  1. python中基本程序结构_关于Python 程序格式框架的描述,正确的是( )
  2. mysql 修改配置生效_linux下面MySQL变量修改及生效
  3. android配置文件说明
  4. 《大数据存储:MongoDB实战指南》一1.1 什么是大数据
  5. 三星三层影像传感器提升拍摄能力 索尼压力倍增
  6. Fedora 13 的新特性
  7. C++array容器用法解析,它与普通数组究竟有何不同?
  8. 闽南师范大学计算机学院研究生,闽南师范大学计算机学院2019考研调剂信息
  9. AcWing 91. 最短Hamilton路径(状态压缩DP+哈密顿回路)
  10. ubuntu修改启动项等待时间、修改启动项顺序、更改启动内核
  11. Publish over FTP发布报错
  12. 迟到的秋招经验分享贴,希望能帮到大家
  13. 从阿里投资B站看动漫IP,二次元市场蕴含了怎样的价值?
  14. php文字怎么居中,PHP图片文字合成居中
  15. oracle 常用调优方法
  16. 《 PHP+H5全栈工程师培训项目实战》
  17. 解决word中公式插入后行间距变大,和文字不统一的问题
  18. github100天python_GitHub - jazeyoung/Python-100-Days: Python - 100天从新手到大师
  19. mysql 内连接、左连接会出现笛卡尔积?
  20. 使用git拉取远程仓库代码

热门文章

  1. 个人觉得不错的网站或文章
  2. Nginx 作为代理服务与负载均衡
  3. VMware linux 克隆机的配置
  4. ELK 企业级日志分析系统
  5. java构造顺序_Java构造顺序
  6. kill进程_你还在使用kill -9 杀进程吗?从原理谈避免踩雷!
  7. centos 卸载docker_Spring Boot学习05_Docker卸载与安装
  8. 云栖发布|阿里云消息队列 RocketMQ 5.0:消息、事件、流融合处理平台
  9. 深度解读 MongoDB 4.4 新特性
  10. 阿里SRE体系如何支撑24小时峰值压力、220+个国家“剁手党”?