Java实现简易ATM系统:继承与多态应用

需积分: 16 1 下载量 96 浏览量 更新于2024-09-12 收藏 40KB DOC 举报
"简易ATM系统是一个教学性质的编程项目,旨在帮助学习者理解类的继承性和多态性。这个系统模拟了基本的银行自动取款机功能,包括普通客户和VIP客户的操作,如存款、取款、查询余额以及VIP客户的透支和转账功能。" 在简易ATM系统中,我们首先需要关注的是类的设计。这里有两个主要的客户类:`Customer`(普通客户)和`CustomerVip`(VIP客户)。`Customer`类是基础类,包含了客户的基本信息,如姓名(name),身份证号(ID),密码(password)以及账户余额(money)。它提供了以下方法: 1. 构造函数:用于初始化这些属性,可能需要从用户输入中获取数据。 2. `saveMoney(int m)`: 存款方法,接受一个整数参数m代表要存入的金额,需要更新账户余额并返回操作是否成功。 3. `getMoney(int m)`: 取款方法,同样接受一个整数参数m,但必须确保账户余额充足,否则操作失败。 4. `search()`: 查询余额方法,显示当前账户余额。 5. `checkpw()`: 验证密码的方法,如果连续3次输入错误,系统将提示并退出。 `CustomerVip`类是`Customer`类的子类,扩展了普通客户的功能,增加了透支和转账功能。透支功能意味着VIP客户即使账户余额不足也可以进行取款,而转账功能则允许客户向其他账户转移资金。这涉及到类的多态性,因为`CustomerVip`可以看作是`Customer`的一个更具体的实例,同时继承并扩展了父类的方法。 工具类`KB`用于处理用户输入,使用`Scanner`类从控制台接收用户的字符和数值输入。这个类的设计有利于代码的模块化,使得用户交互部分与业务逻辑分离,更易于维护和测试。`KB`类可以有以下方法: 1. `scan()`: 接收并返回用户的字符串输入。 2. `scanInt()`: 接收并返回用户的整数输入。 最后,`BankTest`界面类负责整体流程的控制,它会创建客户对象,调用相应的方法执行操作,并根据用户输入来引导流程。这个类通常包含主循环,用来持续接收用户输入,直到用户选择退出为止。 实验步骤中的思考题1询问了工具类`KB`设计的好处,主要是因为它封装了输入操作,使得其他类无需关心输入的具体实现,只关注业务逻辑,提高了代码的可读性和可复用性。 通过这个简易ATM系统,学生可以深入理解面向对象编程的关键概念,包括类的继承、多态以及如何设计符合现实世界模型的类结构。同时,这也提供了一个实际应用这些概念的场景,有助于提升编程技能。