_Account = {}

--创建一张借记卡
function _Account:new( tb )
local _Tb = tb or {}
_Tb._mBalance = _Tb._mBalance or
setmetatable(_Tb, self)
self.__index = self
return _Tb
end --借记卡取款
function _Account:desposit( value )
if value > self._mBalance then
print(string.format("取款"..value .. "失败, 剩余存款" .. self._mBalance))
return
end
self._mBalance = self._mBalance - value
print(string.format("取款"..value .. ", 剩余存款" .. self._mBalance))
end --存钱
function _Account:addBalance(val)
local num = val or
self._mBalance = self._mBalance + num
print("存钱"..val)
end --[[
信用卡也具备储蓄卡的存取功能,所以直接继承储蓄卡,复用储蓄卡的存钱功能。 我们在访问一个表不存在的域时,lua解释器会去查找metatable中是否有__index方法(metamethod),如果不存在则返回nil。
_Credit是_Account:new出来的,metatable是_Account,__index也是_Account,所以当_Credit对象访问addBalance的时候,
会到_Account中找。
]] _Credit = _Account:new({_mLimit = }) --信用卡取款
function _Credit:desposit( value )
if value > self._mBalance + self._mLimit then
print(string.format("取款"..value .. "失败, 剩余额度" .. self._mLimit .. ", 剩余存款"..self._mBalance))
return
end if self._mBalance >= value then
self._mBalance = self._mBalance - value
else
self._mLimit = self._mLimit - (value - self._mBalance)
self._mBalance =
end print(string.format("取款"..value .. ", 剩余额度" .. self._mLimit .. ", 剩余存款"..self._mBalance))
end print(" --储蓄卡--")
local myAccount_2 = _Account:new()
myAccount_2:addBalance()
myAccount_2:desposit()
myAccount_2:desposit() print("\n --信用卡--")
local cyCredit = _Credit:new()
cyCredit:addBalance()
cyCredit:desposit()
cyCredit:desposit()
cyCredit:desposit() --[[结果 --储蓄卡--
存钱1000
取款200, 剩余存款800
取款2000失败, 剩余存款800 --信用卡--
存钱600
取款500, 剩余额度1000, 剩余存款100
取款500, 剩余额度600, 剩余存款0
取款1000失败, 剩余额度600, 剩余存款0 ]]

lua类实现的更多相关文章

  1. LUA类

    cpp_object_map = {}setmetatable(cpp_object_map, { __mode = "kv" }) local search_basesearch ...

  2. lua 类支持属性不能被修改

    背景 lua是类是借助表的来实现的, 类被定义后, 在使用场景下, 不希望被修改.如果被修改, 则影响的类的原始定义, 影响所有使用类的地方. 例如: --- router.lua class fil ...

  3. Lua类的继承 参考实现

    参考url: https://blog.codingnow.com/cloud/LuaOO 最近在思考lua类的继承实现 ,参考了云风的类实现,感觉他的更像是接口写法.于是尝试用自己的方式重写了类实例 ...

  4. Lua类和类继承实现

    Lua本身是不能像C++那样直接实现继承,但我们可以用万能的table表来实现. 以下我总结了三种方式的类以及继承的实现 第一.官方的做法,使用元表实现 原理参照<Programming in ...

  5. lua 类实现

    Class={}; Class.classList={}; --保存所有已经定义过的类 --类的类型: 类和接口, 接口也是一种类 Class.TYPE_CLASS="Class" ...

  6. <7>Lua类的表的实例创建

    根据上一节知识所述Lua中没有像C.C++.JAVA中的类概念,面向对象等 ,但我们可以模拟出来 如下 代码如下: --创建类的表 local Person = {} function Person: ...

  7. lua 类继承和实现

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

  8. lua 面向对象编程类机制实现

    lua no class It is a prototype based language. 在此语言中没有class关键字来创建类. 现代ES6, 已经添加class类. prototype bas ...

  9. 【Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之三】动手绑定自己定义类至Lua

        查看[Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之二]新建项目中配制环境,我们完美的在新建项目中完毕了绑定须要的环境,接下来才是最关健的一步.绑定自己定义C++类至Lu ...

随机推荐

  1. C#抽奖算法

    摘自网络 static void Main(string[] args) { //各物品的概率保存在数组里 ]{ 0.5f, 0.5f, , }; //单次测试 //Console.WriteLine ...

  2. JSP状态管理_1_Cookie

    http协议的无状态性:当浏览器发送请求飞服务器时,服务器相应客户端请求:但当同一个浏览器再次发送请求给浏览器时,服务器并不知道它就是刚才那个客户端. 保存用户状态的两大机制:Session,Cook ...

  3. MVC 运行视图出错

    IIS服务器web核心没有安装造成的

  4. 测试模式 windows2008 内部版本7601

    win server 2008 r2 enterprise 64位系统. 最近手贱,对服务器进行了一下更新,结果傻叉了,这是什么鬼,明明显示已经激活的,但就是有这么一串碍眼的字幕. 电脑右下角居然出现 ...

  5. IDEA中使用Database管理工具

    以下内容来自我的知乎回答IntelliJ IDEA中有什么让你相见恨晚的技巧? 说个冷门的,用IDEA操作数据库. 可能大部分不知道,IDEA是自带数据库管理工具的,类似于一个小型Navicat. 具 ...

  6. HDU 2267 How Many People Can Survive(广搜,简单)

    题目 //一道简单的广搜水题 #include<queue> #include<stdio.h> #include<string.h> #include<al ...

  7. Skyline Web 端数据浏览性能优化

    三维数据的效率一直是个瓶颈,特别是在Web端浏览一直是个问题,在IE内存限制1G的条件下,对于三维数据动不动几十G的数据量,这1G显得多么微不足道.虽然现在三维平台都是分级加载,或者在程序中采用数据分 ...

  8. 配置Jupyter

    前几天见同学有用Jupyter notebook的,有点喜欢,于是今天自己配了一下. Jupyter是一个非常好用编辑器,因为Jupyter notebook 不仅可以编写代码运行,并且可以直接在代码 ...

  9. 洛谷 P1059 明明的随机数

    题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了NNN个111到100010001000之间的随机整数(N≤100)(N≤100)(N≤100),对于其中重复 ...

  10. linux基础随记

    1.cd 切换路径 cd ~vbird 进入这个用户的主目录cd ~ 进入root这个目录下cd .. 进入root上层目录cd - 进入root这个目录下cd /var/spool/mail 直接访 ...