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

 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. 【树上莫队】【带修莫队】【权值分块】bzoj1146 [CTSC2008]网络管理Network

    #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using ...

  2. 解决ubuntu系统中wireshark:Couldn't run /usr/bin/dumpcap in child process: Permission denied的问题

    ubuntu系统运行WIreshark的时候,出现如下错误: Couldn't run /usr/bin/dumpcap in child process: Permission denied 解决办 ...

  3. 使用jmatio读写matlab数据文件

    /** * Created by hfz on 2016/2/23. */ import com.jmatio.io.*; import com.jmatio.types.MLDouble; impo ...

  4. 杂谈PID控制算法——最终篇:C语言实现51单片机中的PID算法

    真遗憾,第二篇章没能够发表到首页上去.趁热打铁.把最终篇——代码篇给发上来. 代码的设计思想请移步前两篇文章 //pid.h #ifndef __PID__ #define __PID__ /*PID ...

  5. 安网讯通签约孟强美容CRM

    整形美容CRM软件是辽宁安网讯通有限公司为孟强整形医院定制开发的一套客户关系管理软件,软件专门针对整形美容行业专科门诊的需求,能满足大中小整形美容机构或或各种专科科室的日常业务需求. 主要功能包括: ...

  6. TOleDBMSSQLConnectionProperties驱动MSSQL数据库

    TOleDBMSSQLConnectionProperties驱动MSSQL数据库 为了让MORMOT可以驱动所有版本的MSSQL,需要改用SQLOLEDB,因为所有的WINDOWS操作系统里面都提供 ...

  7. ArrayAdapter、SimpleAdapter和BaseAdapter示例代码

    import android.content.Context; import android.util.Pair; import android.view.View; import android.v ...

  8. 如何解决nagios安装及运行在的常见错误?(转)

    一.安装nrpe的时候,提示:checking for SSL headers… configure: error: Cannot find ssl headers 解决方法如下: yum -y in ...

  9. D3.js系列——动态效果和Update、Enter、Exit的理解

    一.动态效果 D3 支持制作动态的图表.有时候,图表的变化需要缓慢的发生,以便于让用户看清楚变化的过程,也能给用户不小的友好感. 1.什么是动态效果 前面制作的图表是一蹴而就地出现,然后绘制完成后不再 ...

  10. 虚拟机设置NAT上网

    需要开启虚拟机网络相关服务, 安装虚拟网卡VMware虚拟机下实现NAT方式上网1. 把你的虚拟网卡VMnet8设置为自动获得IP.自动获得DNS服务器,启用.2. 把你虚拟机中操作系统的“本地连接” ...