<8>Lua继承
模拟继承方式
代码:
--继承
-- 基类: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继承的更多相关文章
- lua继承
lua中其实是没有类的,有的只是表(table) lua查找一个表元素时的规则,其实就是如下3个步骤: 1.在表中查找,如果找到,返回该元素,找不到则往下看: 2.判断该表是否有元表,如果没有元表,返 ...
- 对lua继承中self.__index = self的释疑
首先看看从lua表中查找一个键时的流程: -- 当从表t中查找键k时,lua处理如下: -- 1.t中是否有k,有则直接返回值,否则第2步 -- 2.t是否有元表, 无则返回nil, 有则第3步 -- ...
- cocos2dx开发中的lua继承与覆盖C++方法
http://www.litefeel.com/lua-override-userdata/
- Lua继承userdata
http://blog.csdn.net/mywcyfl/article/details/37765751 http://blog.csdn.net/teng_ontheway/article/det ...
- 手游开发之lua的class函数详解
众所周知,lua没有类这个概念但其通过table实现了面向对象的“类”.在cocos2dx引擎下提供了class(className, ...)函数方法名,因为在脚本开发中这个接口基本都会用来创建一个 ...
- class() 高级用法 -- lua
class() 高级用法 class() 除了定义纯 Lua 类之外,还可以从 C++ 对象继承类. 比如需要创建一个工具栏,并在添加按钮时自动排列已有的按钮,那么我们可以使用如下的代码: -- 从 ...
- lua面向对象编程 《lua程序设计》 16章 笔记
Lua中的table就是一种对象,即它拥有状态.拥有独立于其值的标识(self).table与对象一样具有独立于创建者和创建地的征集周期 什么叫对象拥有独立的生命周期? Account = {bala ...
- Lua表(table)的个人总结
1.表的简介和构造 table是个很强大且神奇的东西,又可以作为数组和字典,又可以当作对象,设置module.它是由数组和哈希表结合的实现的.他的key可以是除nil以外任意类型的值,key为整数时, ...
- `cocos2dx非完整` 日志模块 增量更新
在上一篇文章中,说到了"流程"的由来,以及我对流程的使用. 这一片就是对流程的应用.前一篇文章中说到了三条流程 check_log_measure, check_env_measu ...
随机推荐
- 转:深入理解css中position属性及z-index属性
原文链接:https://www.cnblogs.com/zhuzhenwei918/p/6112034.html static定位是HTML元素的默认值,即没有定位,元素出现在正常的流中,因此,这种 ...
- quartz定时任务cron表达式详解
引用:https://www.cnblogs.com/lazyInsects/p/8075487.html cron表达式用于配置cronTrigger的实例.cron表达式实际上是由七个子表达式组成 ...
- tensorflow入门笔记(三) tf.GraphKeys
tf.GraphKeys类存放了图集用到的标准名称. 该标准库使用各种已知的名称收集和检索图中相关的值.例如,tf.Optimizer子类在没有明确指定待优化变量的情况下默认优化被收集到tf.Grap ...
- Orchard Core 自定义权限配置
在我们为Orchard Core配置了一个新的Module之后,我们要考虑的是谁可以访问这个Module,那么这里就涉及到了一个权限的配置.如下图,添加了自定义的权限: Orchard Core源码: ...
- 【Python】脚本运行报错:IndentationError: unindent does not match any outer indentation level
[问题] 一个python脚本,本来都运行好好的,然后写了几行代码,而且也都确保每行都对齐了,但是运行的时候,却出现语法错误: IndentationError: unindent does not ...
- git push error:error: insufficient permission for adding an object to repository database ./object解决
在服务器代码库xxx.git文件夹中:1.sudo chmod -R g+ws *2.sudo chgrp -R mygroup * //mygroup是该文件夹的所有组3.git repo-conf ...
- 解决因为Telnet没有启动导致FTP无法连接的问题
今天ytkah在其他电脑上想用ftp传点东西发现居然连接不上,查看了一下服务器安全组规则里的端口,也没有相关屏蔽.问了一下运维,他说可能是Telnet没有开启.就试着去看看有没问题.打开 控制面板 - ...
- CAS缺点
CAS虽然很高效的解决原子操作,但是CAS仍然存在三大问题.ABA问题,循环时间长开销大和只能保证一个共享变量的原子操作 1. ABA问题.因为CAS需要在操作值的时候检查下值有没有发生变化,如 ...
- 64位的pyd报"ImportError: No module named"错误
今天仿照32位的ModuleA.cp35-win32.pyd,制作了64位的pyd.很随意地命名为ModuleA.cp35-win64.pyd,然后在64环境里编译.发现一直报"Import ...
- Spark partitionBy
partitionBy 重新分区, repartition默认采用HashPartitioner分区,自己设计合理的分区方法(比如数量比较大的key 加个随机数 随机分到更多的分区, 这样处理数据倾斜 ...