java - day13 - UnionPay
银行功能实现,主要为抽象类及接口的运用
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的更多相关文章
- 尚学堂 JAVA Day13 abstract 关键字
Abstract (抽象的) 这是一个关键字. 可以且只可以 用来修饰 <类> <方法>. 1---Abstract 类 如:Animal,可以被理解一个抽象的类.动物嘛,只是 ...
- java - day13 - ImplementDemo
接口实现.继承等关系的运用案例P.S: 强制转换,看引用变量指向的对象与目标数据间的关系.可运用 "引用变量 instanceof 目标数据" 来判断是否可用强转 package ...
- Java 中 常用API概述之 Math, Object, String,StringBuffer类,Arrays,Integer类
Math Math类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数. 与StrictMath类的一些数字方法不同,Math类的StrictMath所有Math都没有定义为返回比特位相同 ...
- Thrift快速入门
Thrift 简单示例 2017-01-19 16:47:57 首先通过先面两个示例简单感受一下Thrift(RPC)服务端与客户端之间的通信...... RPC学习----Thrift快速入门和Ja ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 【JAVA零基础入门系列】Day13 Java类的继承与多态
继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽) 开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟 ...
- 【Java入门提高篇】Day13 Java中的反射机制
前一段时间一直忙,所以没什么时间写博客,拖了这么久,也该更新更新了.最近看到各种知识付费的推出,感觉是好事,也是坏事,好事是对知识沉淀的认可与推动,坏事是感觉很多人忙于把自己的知识变现,相对的在沉淀上 ...
- java基础-day13
第01天 java面向对象 今日内容介绍 u 继承 u 抽象类 第1章 继承 1.1 继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继 ...
- java 多线程 day13 condition 线程通信
/** * Created by chengtao on 17/12/5. * Condition 类似 wait和notify,解决线程间的同步问题 */ import java.util.conc ...
随机推荐
- 【动态规划】Gym - 101147H - Commandos
裸dp,看代码. #include<cstdio> #include<algorithm> #include<cstring> using namespace st ...
- 【二维偏序】【树状数组】【权值分块】【分块】poj2352 Stars
经典问题:二维偏序.给定平面中的n个点,求每个点左下方的点的个数. 因为 所有点已经以y为第一关键字,x为第二关键字排好序,所以我们按读入顺序处理,仅仅需要计算x坐标小于<=某个点的点有多少个就 ...
- 【匈牙利算法模板】BZOJ1191-超级英雄
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> us ...
- 1.8(java学习笔记)继承与方法的重写
继承 在java中可以通过继承提高代码的复用率. 例如A继承了B,就可以是 例如,首先有一个类似Person,这个类中有有一些属性和方法,我们再新建一个Student类,其中有一部分属性和方法与Per ...
- Mac sublime 编译Python UnicodeEncodeError: 'ascii' codec can't encode characters in position 6-8: ordinal not in range(128)
刚学Python,想打印个“hello 张林峰”,代码如下: #!/usr/bin/env python3 # -*- coding: utf-8 -*- print('hello 张林峰') 用su ...
- 水晶报表导出完美EXCEL表格
水晶报表自带的导出Excel不太完美(这一点与SQL的SSRS相比就差太远了),导出的文件没有网格线,而且非常容易出现跨行跨列的现象,要做一个符合要求的报表还真要花不少的时间与精力去调试. 下面我简单 ...
- 【开源类库学习】MBProgressHUD(提示框)
新博客: http://www.liuchendi.com MBProgressHUD是一个开源类库,实现了各种样式的提示框, 下载地址:https://github.com/jdg/MBProgre ...
- ASP.NET MVC生命周期介绍(转)
本文以IIS7中asp.net应用程序生命周期为例,介绍了asp.net mvc的生命周期. asp.net应用程序管道处理用户请求时特别强调"时机",对asp.net生命周期的了 ...
- CAP 定理的含义
分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的. 分布式系统的最大难点,就是各个节点的状态如何同步.CAP 定理是这方面的基本定理,也是理解分布式系统的起 ...
- 性能测试之工具对比-ngrinder jmeter loadunner及ngrinder安装使用方法
参考:https://blog.csdn.net/bear_w/article/details/78366078