当前位置: 首页 > news >正文

【Lua】题目小练10

题目要求

实现一个 BankAccount 类和一个 SavingsAccount 类:

BankAccount 类

  1. 私有方法:validateAmount(amount)

    • 检查金额是否为正数(返回布尔值)

    • 不能被外部和子类直接访问

  2. 公有方法:

    • deposit(amount):存款

      • 调用 validateAmount 验证金额

      • 有效则增加余额并打印成功信息

      • 无效则打印错误信息

    • withdraw(amount):取款

      • 验证金额并检查余额是否足够

      • 有效则减少余额并打印成功信息

      • 无效则打印错误信息

  3. 属性:

    • balance(余额):初始化为0,外部不能直接修改

SavingsAccount 类(继承自 BankAccount)

  1. 重写 withdraw 方法:

    • 在调用父类的 withdraw 前检查:

      • 取款后余额是否 >= 100(储蓄账户最低余额要求)

      • 如果低于100则打印错误信息

      • 否则调用父类的 withdraw

--BankAccount.lua--
local BankAccount = {}
BankAccount.__index = BankAccountlocal function validateAmount(amount)return type(amount) == "number" and amount > 0 and true or false
endfunction BankAccount:new()local obj = {balance = 0}setmetatable(obj, self)self.__index = selfreturn obj
endfunction BankAccount:deposit(amount)if validateAmount(amount) thenself.balance = self.balance + amountprint("成功存入:"..amount..",当前余额:"..self.balance)elseprint("金额有误,请确认金额数大于0")end
endfunction BankAccount:withdraw(amount)if validateAmount(amount) thenif self.balance >= amount thenself.balance = self.balance - amountprint("成功取款:"..amount..",当前余额为:"..self.balance)elseprint("余额不足")endelseprint("金额有误,请确认金额数大于0")end
endreturn BankAccount
--SavingsAccount.lua--local BankAccount = require("BankAccount")local SavingsAccount = {}
SavingsAccount.__index = SavingsAccount
setmetatable(SavingsAccount, {__index = BankAccount})function SavingsAccount:new()local obj = BankAccount:new()setmetatable(obj, self)self.__index = selfreturn obj
endfunction SavingsAccount:withdraw(amount)if self.balance - amount >= 100 thenBankAccount:withdraw(amount)elseprint("取款失败,取款后的余额不得小于100")end 
end-- 测试 BankAccount
local ba = BankAccount:new()
ba:deposit(200)   -- 存款成功,余额200
ba:withdraw(50)   -- 取款成功,余额150
ba:withdraw(200)  -- 取款失败,余额不足-- 测试 SavingsAccount
local sa = SavingsAccount:new()
sa:deposit(500)   -- 存款成功,余额500
sa:withdraw(450)  -- 取款失败:储蓄账户需保留至少100元余额
sa:withdraw(400)  -- 取款成功,余额100
sa:withdraw(1)    -- 取款失败:储蓄账户需保留至少100元余额-- 测试直接访问私有方法(应该报错)
ba.validateAmount(100)  -- 报错:attempt to call method 'validateAmount' (a nil value)
http://www.dtcms.com/a/326413.html

相关文章:

  • computed使用的方式
  • 【Lua】XLua加载lua文件
  • xlsxio全平台(x86、arm32、arm64 )编译、测试,使用编译脚本10分钟快速编译!
  • redis常见的性能问题
  • 游戏盾是什么?
  • Qwen Code CLI在Windows上的安装与环境配置问题解决
  • 金蝶云星辰:赋能企业数据管理
  • 开发指南130-实体类的主键生成策略
  • 达梦数据库慢SQL日志收集和分析
  • 机器学习 TF-IDF提取关键词,从原理到实践的文本特征提取利器​
  • Java 之抽象类和接口
  • 数据结构-数组扩容
  • 2025苹果CMS泛目录 8月最新可用
  • 软件测评中HTTP 安全头的配置与测试规范
  • 鸿蒙开发中所有自定义装饰器的完整案例解析--涵盖 16 个核心装饰器的详细用法和实战场景
  • QT 高分屏不同缩放比例的自适应处理
  • 数据科学与计算实例应用
  • 借助 ChatGPT 快速实现 TinyMCE 段落间距与行间距调节
  • Ansible 面试题 20250811
  • OpenGL中的EBO:高效渲染的秘密武器(绘制四边形)(Unreal Engine、Unity、Godot原理系列)
  • JavaScript中map和forEach的区别详解
  • 动捕设备是什么?全面解析NOKOV度量动捕设备的原理、类型与应用
  • redis(1)-基本概念
  • ROS2不同版本的区别
  • JVM 运行时全景:从类加载到 GC 的底层原理与调优指南
  • JVM运维
  • javaJVM ‘
  • 电子电气架构 --- 软件定义汽车的驱动和挑战
  • C++多态是如何实现
  • # Java制作堆Dump