模拟继承方式

代码:

--继承
-- 基类:Person
local Person = {} --基类的表
-- 方法
function Person:test()
print("Person:test()",self)
end
function Person:new(instance)
if not instance then
instance = {}
end local meta_Person = {
__index = self,
} setmetatable(instance,meta_Person)
return instance
end
--end
-- 子类:man
local Man = Person:new()
-- 方法
function Man:test_man()
print("man:test_man",self)
end
--end --实例化子类
local p = Man:new()
print("p ==== ",p)
p:test_man()
p:test() --Person:setName()

结果:

1: 子类的表是父类的一个实例

2: 子类的表作为一个原型再new了一个表;

类的实实例-->元表-->子类的表-->元表-->父类的表;

3: 现在子类的实例找,找不到到元表找,元表找不到,到元表的元表找;

4: 子类重载父类的函数;

首先在实例表里查找---》子类查找--》父类查找等等

5: 子类调用父类的函数;

<8>Lua继承的更多相关文章

  1. lua继承

    lua中其实是没有类的,有的只是表(table) lua查找一个表元素时的规则,其实就是如下3个步骤: 1.在表中查找,如果找到,返回该元素,找不到则往下看: 2.判断该表是否有元表,如果没有元表,返 ...

  2. 对lua继承中self.__index = self的释疑

    首先看看从lua表中查找一个键时的流程: -- 当从表t中查找键k时,lua处理如下: -- 1.t中是否有k,有则直接返回值,否则第2步 -- 2.t是否有元表, 无则返回nil, 有则第3步 -- ...

  3. cocos2dx开发中的lua继承与覆盖C++方法

    http://www.litefeel.com/lua-override-userdata/

  4. Lua继承userdata

    http://blog.csdn.net/mywcyfl/article/details/37765751 http://blog.csdn.net/teng_ontheway/article/det ...

  5. 手游开发之lua的class函数详解

    众所周知,lua没有类这个概念但其通过table实现了面向对象的“类”.在cocos2dx引擎下提供了class(className, ...)函数方法名,因为在脚本开发中这个接口基本都会用来创建一个 ...

  6. class() 高级用法 -- lua

    class() 高级用法 class() 除了定义纯 Lua 类之外,还可以从 C++ 对象继承类. 比如需要创建一个工具栏,并在添加按钮时自动排列已有的按钮,那么我们可以使用如下的代码: -- 从 ...

  7. lua面向对象编程 《lua程序设计》 16章 笔记

    Lua中的table就是一种对象,即它拥有状态.拥有独立于其值的标识(self).table与对象一样具有独立于创建者和创建地的征集周期 什么叫对象拥有独立的生命周期? Account = {bala ...

  8. Lua表(table)的个人总结

    1.表的简介和构造 table是个很强大且神奇的东西,又可以作为数组和字典,又可以当作对象,设置module.它是由数组和哈希表结合的实现的.他的key可以是除nil以外任意类型的值,key为整数时, ...

  9. `cocos2dx非完整` 日志模块 增量更新

    在上一篇文章中,说到了"流程"的由来,以及我对流程的使用. 这一片就是对流程的应用.前一篇文章中说到了三条流程 check_log_measure, check_env_measu ...

随机推荐

  1. [nginx] load balancing & location

    一 将NGINX配置成7层load balancer,该怎么做? 参见: http://nginx.org/en/docs/http/load_balancing.html https://docs. ...

  2. 树和二叉树->遍历

    文字描述 二叉树的先根遍历 若二叉树为空,则空操纵,否则 (1) 访问根结点 (2) 先根遍历左子树 (3) 先根遍历右子树 二叉树的中根遍历 若二叉树为空,则空操纵,否则 (1) 中根遍历左子树 ( ...

  3. 2018/05/07 Linux find命令中{}的作用

    首先抛出一个问题,如果你在文件中建立了一个 -a.txt 的文件,你会怎么删除它? 我之前的回答是 rm -a.txt 实验结果很明显,不能删除. 因为在 Linux 下,会把 -a.txt 前面的 ...

  4. mysql的增删改查

    1.启动 Navicat for MySQL, 在 MySQL – 新建连接中完成连接参数配置.2.登录到本地数据库服务器后, 连接到 test 数据库上.3.用 Create Table 建立 St ...

  5. 第二章 构建布局良好的windows程序

    工具箱→菜单和工具栏 菜单栏 MenuStrip的类型 MenuItem:菜单项 TextBox:文本框 ComboBoX:组合框 Separato:分割线 前面都有ToolStrip做前缀 Appl ...

  6. MapStruct

    一.Object mapping 的技术分类: 运行期 反射调用set/get 或者是直接对成员变量赋值 . 该方式通过invoke执行赋值,实现时一般会采用beanutil, Javassist等开 ...

  7. JavaScript学习(五)

  8. (1.4)mysql sql mode 设置与使用

    关键词: mysql sql mode 1.查阅 mysql> mysql> show variables like 'sql_mode%';+---------------+------ ...

  9. centos安装Django之一:安装openssl

    这几天在部署Django,需要安装的东西有点多,python3.pip3.openssl(pip依赖ssl环境),所以第一步是安装openssl,如何安装呢?主要有三步,随ytkah一起来看看吧 1. ...

  10. MathWorks.MATLAB.NET.Arrays.MWArray”的类型初始值设定项引发异常 解决方法

    原因 用的是matlab7运行时,后面又安装了matlab11,后面又重新安装了matlab7运行时,c盘下就有二个运行时的版本了,程序引用了后面的那个,编译后就出上面的问题 解决方法 1重新引用上面 ...