--lua仿单继承
Account = { balance = }
--对于成员变量,第一此访问要使用元表中的,在第一次也赋值到自己的域中了
--将不涉及到__index了
function Account:new(o)
o = o or {} --setmetatable看到后面,忘了这个啥意思了
--如a+b,当lua试图对两个表进行相加时,他会检查两个表是否有一个表有metatable,
--如果知道检查到元表有__add域,如果有直接调用__add方法
setmetatable(o, self)--Account表本身作为o的metatable,不设置元表,他到哪儿去查找元方法呢 --当调用self没有的成员时到self里面查找
self.__index = self--自己作为自己的原型
return o
end function Account:deposit(v)
self.balance = self.balance + v
end function Account:withdraw(v)
if v > self.balance then print("insufficient funds") end
self.balance = self.balance - v
end SpecialAccount = Account:new()--从Account继承所有操作 --重定义父类的withdraw函数因为他在本对象中就找到了此方法
function SpecialAccount:withdraw(v)
if v - self.balance >= self:getLimit() then
print("insufficient funds")
end
self.balance = self.balance - v
end function SpecialAccount:getLimit()
return self.limit or
end SpecialAccount = Account:new()--SpecialAccount此时将Account设置成了元表,SpecialAccount有了Account的所有的成员
--此时SpecialAccount的域limit的值已经是1000
s = SpecialAccount:new{limit = 1000.00}--s继承SpecialAccount有SpecialAccount所有的成员,SpecialAccount继承Account
s:withdraw(200.00)
s:deposit(100.00)

吗的真不好理解,太绕了

在看lua仿单继承的更多相关文章

  1. lua(仿单继承)

    --lua仿单继承 Account = { balance = } function Account:new(o) o = o or {} setmetatable(o, self)--Account ...

  2. cocos2dx lua中继承与覆盖C++方法

    cocos2dx的extern.lua中的class方法为lua扩展了面向对象的功能,这使我们在开发中可以方便的继承原生类 但是用function返回对象的方法来继承C++类是没有super字段的,这 ...

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

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

  4. 一文看懂JS继承

    继承是OOP中大家最喜欢谈论的内容之一,一般来说,继承都两种方式:接口继承和实现继承而JavaScript中没有接口继承需要的方法,因此只能依靠实现继承.在讲继承的实现之前,我们首先来回顾一下什么是继 ...

  5. 一次 outline 去除经验(非继承属性,看着像继承)

    情况描述: 目前维护的老项目是通过 easyui 生成的 html,嵌套结构非常多,当点击元素后,会有个边框???非常影响页面美观,这是啥迷惑点击交互??? 经验告诉我,这是 css 的 outlin ...

  6. lua 类继承和实现

    http://blog.csdn.net/ssihc0/article/details/7742323 Account={balance=}; --新建了一个对像,他有一个属性balance func ...

  7. Lua面向对象 --- 继承

    工程结构: BasePlayer.lua: BasePlayer = {} BasePlayer.root = "BasePlayer" function BasePlayer:S ...

  8. 【游戏开发】在Lua中实现面向对象特性——模拟类、继承、多态

    一.简介 Lua是一门非常强大.非常灵活的脚本语言,自它从发明以来,无数的游戏使用了Lua作为开发语言.但是作为一款脚本语言,Lua也有着自己的不足,那就是它本身并没有提供面向对象的特性,而游戏开发是 ...

  9. 【转载】【游戏开发】在Lua中实现面向对象特性——模拟类、继承、多态

    [游戏开发]在Lua中实现面向对象特性——模拟类.继承.多态   阅读目录 一.简介 二.前提知识 三.Lua中实现类.继承.多态 四.总结 回到顶部 一.简介 Lua是一门非常强大.非常灵活的脚本语 ...

随机推荐

  1. python 判断字符串中是否只有中文字符

    python 判断字符串中是否只有中文字符 学习了:https://segmentfault.com/q/1010000007898150 def is_all_zh(s): for c in s: ...

  2. openerp所用QWEB2的调试笔记

    [1] 调式qweb模板时, 可以脱离openerp环境 阅读一下openerp目录 qweb目录中的几个html文件,可以作为起步 在浏览器下, 可以这样运行这些文件 http://127.0.0. ...

  3. openerp编辑与非编辑下隐藏按钮的方法

    在form表单中,有些控件希望在编辑的时候显示,非编辑时不显示,如hr模块的员工表单,在非编辑模式中,姓名的title不显示,而在编辑模式中显示出来.我们可以在xml文件中给控件赋属性值,class= ...

  4. 《DirectX 9.0 3D游戏开发编程基础》 第二章 绘制流水线 读书笔记

    模型的表示 场景:物品或模型的集合 任何物品都可以用三角形网络逼近表示.我们经常用以下术语描述三角形网络:多边形(polygons).图元(primitives).网络几何单元(mesh geomet ...

  5. oci pool

    http://wenku.baidu.com/link?url=uS8tWxcs7MxNdx5HiGCEyvXsCj0zF5-7pCRVQtlRH5eVuMmSKKqNziSc2O_pyepnnuc_ ...

  6. IE6 ajax解析parseerror

    IE6下,用a[href="javascript:void(0);"]或者a[href="javascript:;"]发起ajax|jsonp请求会出现请求成功 ...

  7. Linux入门常用指令

    linux获取硬盘和目录大小的命令 df命令 Linux下可以用df命令获取硬盘的使用情况,通过man可以获取df命令的详细情况.df命令经常用的参数为: a:显示全部的档案系统和各分割区的磁盘使用情 ...

  8. RapidIO协议(1)

    RapidIO协议 1.概述 1.1介绍 RapidIO是基于包交换互联协议,主要作为系统内部接口使用,如:芯片间.板间的通讯,速度能在GB/S数量级.如连接处理器.内存.内存映射的I/O设备.这些设 ...

  9. GTS、GCK,GSR全称

    GTS:Global 3-state buffer delay 全局使能,三态 GCK:Global Clock buffer delay   全局时钟 GSR:Global set/reset bu ...

  10. 李洪强漫谈iOS开发[C语言-001]-开发概述