银行功能实现,主要为抽象类及接口的运用

 package com.javatest.bankimple;
/* UnionPay */
//银联接口
public interface UnionPay {
public static final double EXCHANGERATE = 6.13; //汇率
public abstract void save(); //存钱
double pick(double pick); //取钱
void check(); //查询余额
boolean checkPassWord(int password); //验证密码
} interface ICBC extends UnionPay{ //工商行接口
public abstract void onlineCharge(); //在线支付
} interface ABC extends UnionPay{ //农行接口
public abstract void onlineChargeForMobile(); //在线支付电话费
}
 package com.javatest.bankimple;
import com.javatest.bankimple.*; /* 工商行及农行的接口实现 */ //实现工商行接口
public class ICBCImple implements ICBC{
private double currentSum; //卡上目前余额,钱的来源就是要存储、读取记录的地方
private int passwordPerson;
ICBCImple(double currentSum,int passwordPerson){
this.currentSum = currentSum;
this.passwordPerson = passwordPerson;
} /*
* 存钱
* */
public void save(){} /*
* 取钱
* */
public double pick(double pickNum){ //核查是否可取款
if(pickNum<=currentSum){
currentSum -= pickNum;//卡上余额
System.out.println("取款成功,余额为:"+currentSum);
}else{
System.out.println("卡上余额不足");
}
return currentSum;
} /*
* 查询余额
* */
public void check(){
System.out.println("卡上余额为:"+currentSum);
} /*
* 验证密码
* */
public boolean checkPassWord(int passwordICBC){
boolean flag;
if(passwordICBC == passwordPerson){
System.out.println("输入正确");
flag = true;
}else{
System.out.println("输入错误");
flag = false;
}
return flag;
} /*
* 在线支付
* */
public void onlineCharge(){}
} //农行接口
class ABCImple implements ABC{
boolean flag; public void save(){} //存
public double pick(double pickNum){
return 0;
} //取钱
public void check(){
} //查钱
public boolean checkPassWord(int passwordABC){
return flag;
} //验证密码
public void onlineChargeForMobile(){} //在线支付电话费
}
 package com.javatest.bankimple;
import com.javatest.bankimple.UnionPay;
import com.javatest.bankimple.ICBCImple;
import java.util.Scanner; /* main测试 */ public class BankImple {
public static void main(String[] args){
UnionPay icbc = new ICBCImple(50000,123);//建工商行--向上造型 //实现工商行功能
System.out.println("工商银行欢迎你");
Scanner scanICBC = new Scanner(System.in); /*
* 验证密码
* */
System.out.print("输入密码:");
int password = scanICBC.nextInt(); if(icbc.checkPassWord(password)){
/*
* 查询余额
* */
System.out.println("是否要查询余额(Y/N):");
String inputRemain = scanICBC.next();
if(inputRemain.equals("Y")){
icbc.check();
}else if(inputRemain.equals("N")){
System.out.println("不查询余额");
} /*
* 取钱
* */
System.out.print("请输入取款数目:");
double pickICBC = scanICBC.nextDouble();
icbc.pick(pickICBC);
}
else{
System.out.println("密码错误,无权访问");
}
}
}

其中,类成员变量私有、对应方法公开以供外部访问/调用的用法 --供外部访问,但不允许外部修改

 public class ICBCImple implements ICBC{
private double money; //卡上余额
private int pwd; //密码
ICBCImple(double money,int pwd){
this.money = money;
this.pwd = pwd;
}
....
}

java - day13 - UnionPay的更多相关文章

  1. 尚学堂 JAVA Day13 abstract 关键字

    Abstract (抽象的) 这是一个关键字. 可以且只可以 用来修饰 <类> <方法>. 1---Abstract 类 如:Animal,可以被理解一个抽象的类.动物嘛,只是 ...

  2. java - day13 - ImplementDemo

    接口实现.继承等关系的运用案例P.S: 强制转换,看引用变量指向的对象与目标数据间的关系.可运用 "引用变量 instanceof 目标数据" 来判断是否可用强转 package ...

  3. Java 中 常用API概述之 Math, Object, String,StringBuffer类,Arrays,Integer类

    Math Math类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数. 与StrictMath类的一些数字方法不同,Math类的StrictMath所有Math都没有定义为返回比特位相同 ...

  4. Thrift快速入门

    Thrift 简单示例 2017-01-19 16:47:57 首先通过先面两个示例简单感受一下Thrift(RPC)服务端与客户端之间的通信...... RPC学习----Thrift快速入门和Ja ...

  5. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  6. 【JAVA零基础入门系列】Day13 Java类的继承与多态

    继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽) 开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟 ...

  7. 【Java入门提高篇】Day13 Java中的反射机制

    前一段时间一直忙,所以没什么时间写博客,拖了这么久,也该更新更新了.最近看到各种知识付费的推出,感觉是好事,也是坏事,好事是对知识沉淀的认可与推动,坏事是感觉很多人忙于把自己的知识变现,相对的在沉淀上 ...

  8. java基础-day13

    第01天 java面向对象 今日内容介绍 u 继承 u 抽象类 第1章   继承 1.1  继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继 ...

  9. java 多线程 day13 condition 线程通信

    /** * Created by chengtao on 17/12/5. * Condition 类似 wait和notify,解决线程间的同步问题 */ import java.util.conc ...

随机推荐

  1. nginx+php-fpm 报错Primary script unknown

    报错信息(nginx日志): // :: [crit] #: * stat() : Permission denied), client: 172.21.205.25, server: localho ...

  2. RxJava 2.x 理解-2

    操作符总结: http://reactivex.io/documentation/operators.html https://github.com/ReactiveX/RxJava/wiki Ope ...

  3. 使用openssl生成密钥、加密和签名

    openssl genrsa -out rsakey.pem 1024  //生成1024bit的RSA密钥,并保存到rsakey.pem,此处未对密钥进行加密 openssl genrsa -aes ...

  4. ExtJS 4 在Ext.tab.Panel中使用Ext.ux.IFrame打开url指向的网页

    ext-4.2.1.883\examples\ux\IFrame.js ext-4.2.1.883\examples\ux\TabCloseMenu.js 复制到 \Scripts\ext-4.2.1 ...

  5. iOS:XMPP即时聊天知识

    XMPP即时聊天框架:XMPPFramework   XMPP The Extensible Messaging and Presence Protocol(可扩展通讯和表示协议). 基于XML XM ...

  6. EasyUI-解决EasyUI 加载两次url的问题

    1.传统方式 $(function () { var url = "../Source/Query/jhDataQry.ashx?action=query"; $(dg).data ...

  7. angular 学习理解笔记

    原文:https://github.com/eoinkelly/notes/blob/master/angular/book-building-web-apps-w-angular/angular.m ...

  8. springboot集成mybatis-generator

    首先上下成功后的效果: 配置非常简单,我们是通过maven插件来进行的,一共只需要3步: 第一步添加mysql依赖和mysql的maven插件: 由于是非常简单的spring+mysql的原始项目,我 ...

  9. (草稿)spring @value 原理源码解读

    一切要从这说起:http://www.cnblogs.com/guazi/p/6698654.html 我们直接开始debug: 这里会遍历所有的需要注入的InjectedElement 这里我们需要 ...

  10. java 问题汇总(总结,重点)若忘了可以看看{不定时更新}

    在用到spring框架中时,场景如下 post 请求过去,对象接收不到参数的值(解决办法:考虑到在参数上加个@RequestBody 注解即可,有些没加的是框架帮忙处理了后默认接收的是json串) h ...