用前面所知案例,简单实现一个银行卡系统。涉及的Java知识有:

interface(接口),abstract(抽象修饰符),extends(继承),implements(接口的实现),@Override(重写)

案例具体要求:

要求实现银行卡系统的银联接口

银联接口,用于描述银联统一制定的规则,该接口提供检测密码方法、取钱方法以及查询余额方法。工商银行接口,用于描述工商银行发行的卡片功能,在满足银联接口的规则基础上,增加了在线支付功能。农业银行接口,用于描述中国农业银行发行的卡片功能,在满足银联接口的规则基础上,增加了支付电话费的功能。另外,农行的卡的卡内余额,允许最多透支2000。实现工商银行接口和农业银行接口,并进行测试。

代码如下:

package cn.oopinterface.atm;/** * 银联接口,用于描述银联统一制定的规则,该接口提供检测密码方法、取钱方法以及查询余额方法。 * @author yflad-F */publicinterfaceUnion{//检测密码方法, 密码为boolean类型publicabstractboolean checkPassword(int password);//取钱方法publicabstractboolean takeMoney(double money);//查询余额方法publicabstractdouble balance();}

package cn.oopinterface.atm;/** * 2. 工商银行接口,用于描述工商银行发行的卡片功能,在满足银联接口的规则基础上,增加了在线支付功能。 * @author yflad-F */publicinterface ICBC extendsUnion{//在线支付publicabstractboolean onlinPay(double money);}

package cn.oopinterface.atm;/** * 3. 农业银行接口,用于描述中国农业银行发行的卡片功能,在满足银联接口的规则基础上, * 增加了支付电话费的功能。另外,农行的卡的卡内余额,允许最多透支2000。 * @author yflad-F */publicinterface ABC extendsUnion{//电话费publicabstractboolean phonePay(String tellno,double money);//信用额度publicabstractboolean credit(double money);}

接口的实现

package cn.oopinterface.atm;/** * 工商银行的实现类 * @author yflad-F */publicclassICBCImplimplements ICBC{double money=2000;//卡里的本金@Overridepublicboolean checkPassword(int password){//检测密码方法if(password==123456){returntrue;}returnfalse;}@Overridepublicboolean takeMoney(double money){//取钱方法//取出来的钱应该小于等于本金if(this.money>=money){this.money-=money;returntrue;}returnfalse;}@Overridepublicdouble balance(){//查询余额方法return money;}@Overridepublicboolean onlinPay(double money){//在线支付// 支付的金额应该小于等于剩余的钱if(this.money>=money){this.money-=money;returntrue;}returnfalse;}}

package cn.oopinterface.atm;/** * 农业银行的实现类 * @author yflad-F */publicclassABCImplimplements ABC{double money =2000;@Overridepublicboolean checkPassword(int password){//检测密码方法if(password==123456){returntrue;}returnfalse;}@Overridepublicboolean takeMoney(double money){//取钱方法//取出来的钱应该小于等于本金if(this.money+2000>=money){this.money-=money;returntrue;}returnfalse;}@Overridepublicdouble balance(){//查询余额方法return money;}@Overridepublicboolean phonePay(String tellno,double money){//电话费if(this.money+2000>=money){this.money-=money;returntrue;}else{System.out.println("电话号码错误!请重新输入:");}returnfalse;}@Overridepublicboolean credit(double money){//信用额度if(this.money+2000>=money){this.money-=money;returntrue;}returnfalse;}}

测试

package cn.oopinterface.atm;importjava.util.Scanner;/** * 工商银行测试 * @author yflad-F */publicclassICBCTest{publicstaticvoid main(String[] args){ ICBC icbc =newICBCImpl();Scanner sc =newScanner(System.in);for(int i =1; i <=3; i++){System.out.println("请输入银行卡密码:");int pwd = sc.nextInt();if(icbc.checkPassword(pwd)){while(true){System.out.println("1.查询余额 2.取出金额 3.在线支付 4.退出系统");int type = sc.nextInt();if(type ==1){System.out.println("余额:"+icbc.balance()+" 元");}if(type ==2){System.out.println("请输入你要取出的金额:");double m=sc.nextDouble();if(icbc.takeMoney(m)){System.out.println("提现成功!");System.out.println("余额为:"+icbc.balance());}else{System.out.println("余额不足!");}}if(type ==3){System.out.println("请输入你要付款的金额:");double m=sc.nextDouble();if(icbc.onlinPay(m)){System.out.println("付款成功!");System.out.println("余额为:"+icbc.balance()+" 元");}else{System.out.println("余额不足!");}}if(type ==4){System.out.println("退出系统成功!");break;}}break;}else{if(i ==3){System.out.println("密码错误次数超过三次,卡已锁定!");break;}System.out.println("密码错误,请重新输入!");}}}}

package cn.oopinterface.atm;importjava.util.Scanner;/** * 农业银行测试 * @author yflad-F */publicclassABCTest{publicstaticvoid main(String[] args){ ABC abc =newABCImpl();Scanner sc =newScanner(System.in);for(int i =1; i <=3; i++){System.out.println("请输入银行卡密码:");int pwd = sc.nextInt();if(abc.checkPassword(pwd)){while(true){System.out.println("1.查询余额 2.取出金额 3.缴电话费 4.退出系统");int type = sc.nextInt();if(type ==1){System.out.println("余额:"+ abc.balance()+" 元");}if(type ==2){System.out.println("请输入你要取出的金额:");double m = sc.nextDouble();if(abc.takeMoney(m)){System.out.println("提现成功!");System.out.println("余额为:"+ abc.balance());}else{System.out.println("余额不足!");}}if(type ==3){System.out.println("请输入你要充值的号码:");String phone = sc.next();// 判断电话号码长度是否为11位if(phone.length()==11){// 进入到这说明可以充值System.out.println("请输入充值金额:");double money = sc.nextDouble();if(abc.phonePay(phone, money)){System.out.println("支付成功!");System.out.println("余额为:"+ abc.balance());}else{System.out.println("余额不足!");}break;}else{}System.out.println("电话号码错误,请重新缴费!");}if(type ==4){System.out.println("退出系统成功!");break;}}break;}else{if(i ==3){System.out.println("密码错误次数超过三次,卡已锁定!");break;}System.out.println("密码错误,请重新输入!");}}}}

java 银行卡支付_Java学习:用接口简单实现银行卡系统相关推荐

  1. java中塑形_Java学习5——接口和多态

    1 接口 接口相当于一个完全抽象的,没有任何实现的类 所有的成员函数都是抽象函数 所有的成员变量都是public static final而且一定要赋予初值 接口中的静态函数必须有函数体 接口在声明时 ...

  2. 基于JAVA智友少儿编程学习平台计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA智友少儿编程学习平台计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA智友少儿编程学习平台计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S架构 ...

  3. 基于JAVA医学生在线学习交流平台计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA医学生在线学习交流平台计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA医学生在线学习交流平台计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S ...

  4. java 绘制长方形_Java入门:绘制简单图形

    在上一节,我们学习了如何使用swing和awt工具创建一个空的窗口,本节学习如何绘制简单图形. 基本绘图介绍 Java中绘制基本图形,可以使用Java类库中的Graphics类,此类位于java.aw ...

  5. java app支付_Java 微信支付之APP支付服务端 (一)

    Java 微信支付之APP支付服务端 (一) 如图所示,这是服务端要集成的所有微信接口.至于在开放平台申请就不做赘述了.主要流程,1.下单,2.异步通知,3.查询. 一.微信统一下单请求交易 /** ...

  6. java 子类必须实现_Java学习之接口的子类必须实现接口的全部方法吗?

    接口的子类必须实现接口的全部方法吗? 接口的子类必须实现接口中全部的方法吗?答案:不是.原因如下: 如果子类是非抽象类,则必须实现接口中的所有方法: 如果子类是抽象类,则可以不实现接口中的所有方法,因 ...

  7. java算法优化_Java学习笔记---Java简单的代码算法优化(例)

    例:用一张1元纸币兑换1分.2分.5分硬币,要求兑换50枚硬币,求出所有组合. package mypackage01; public class demo { public static void ...

  8. java支付宝支付_Java 高并发环境下的性能优化,揭秘支付宝技术内幕

    前言 高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等. 为了让业务可以流畅的运行并且给用户一个好的交互体验,我们需要根据业务场景预估达到的并发量等因素,来设计适 ...

  9. android xml java混合编程_Java学习中注解与多线程,网络编程与XML技术

    本部分内容主要有集合框架及泛型,实用类,输入和输出处理,注解与多线程,网络编程与XML技术.初次学习这部分会感觉很难,主要是概念难于理解,最好是多看看例子,多练习.下面是个人的总结 拉勾IT课小编为大 ...

最新文章

  1. Android Acitivity 生命周期
  2. 【贪心】【字典树】Gym - 101466A - Gaby And Addition
  3. Hadoop安装记录
  4. 腾讯安全团队深入解析wannacry蠕虫病毒
  5. linux修改主机名(不重启)
  6. Linux chmod 修改多个文件权限
  7. python之小坑:IndentationError: expected an indented block
  8. ps计算机设置,ps标尺怎么调出来
  9. Windows Redis 整理
  10. com.android.phone已停止无限重启,Android Q没法用,大批用户反馈手机无限重启
  11. 编写一个程序,计算学生的总分和平均成绩(一)
  12. 马尔科夫链蒙特卡洛(MCMC)
  13. 关于云开发数据库的使用经验和建议
  14. 严格落实常态化疫情防控措施
  15. 在哪里计算机的cpu显卡硬盘,电脑硬件升级攻略 CPU/内存/显卡/固态硬盘该如何选择?...
  16. QT 制作 gif 录屏 小工具
  17. python对比2个文件内容
  18. 使用JSONObject所需jar包,云盘链接下载
  19. html个人签到送一句话,一句话签到语录
  20. 小程序HCE能力开放,手机秒变公交卡

热门文章

  1. U8g2库的详细使用
  2. javaWeb用户注册之用户名、密码、邮箱验证例题
  3. 学习签名signature 的使用
  4. pe卸载linux系统软件,ciscodk教你卸载Linux软件
  5. python用turtle库画正方形_Python也可以这么“文雅”,用turtle库画一幅高傲的梅花...
  6. 8. Android MultiMedia框架完全解析 - prepareAsync的过程分析
  7. h5获取当前浏览器ip和城市名称
  8. moectf Amazing_eval
  9. inrul plus 90sec.php,DEDE木马后门专杀工具 针对 90sec.php 一类
  10. BootstrapTable去掉表格与分页的空白