Java 练习(多态,instanceof)
题目:*(封装、继承)设计如下的继承树:

Accout 表示银行账户,id 属性表示账户id,balance 表示账户余额,password 表示账户密码;
SavingAccount 表示储蓄账户,interestRate 表示存款利率;
CreditAccount 表示信用账户,creditLine 表示信用额度。
完成下列任务:
1) 所有属性都应设为私有,根据需要增加构造方法和get/set 方法。
2) *修改setPassword 方法,要求:
setPassword 判断新密码长度是否是6 位,如果不是则不予修改;
修改getPassword 方法,要求每次都返回null 值。
3) *修改interestRate 的set 方法,要求利率大于0 并小于10%。
10. **(综合)在第18 题的基础上,创建一个Bank 类,其中包括三个方法:开户、存款、取款
a) 开户:
Account openAccount(long id, String password, int type)
其中,id 表示账户id,password 表示账户密码,type 表示账户类型。如果type 为0则创建一个Account 账户,如果type 为1 则创建一个储蓄账户SavingAccount,如果type为2 则创建一个信用账户CreditAccount。返回值为开户时创建的Account 对象
b) 存款
double deposit(Account a, double amount)
其中,a 表示存入账号,amount 表示存入的金额。返回值表示存款之后的余额
c) 取款
double withdraw(Account a, double amount)
其中,a 表示取款账号,amount 表示取出的金额,返回值表示取款之后的余额。特别的,除非Account 类型是CreditAccount,否则不允许透支。
答案如下:
package day4; public class Account {
private long id;
private double balance;
private String password;
public Account() {
super();
// TODO Auto-generated constructor stub
}
public Account(long id, double balance, String password) {
super();
this.id = id;
this.balance = balance;
setPassword(password);
}
public long getId() {
System.out.println("请看我是id");
return id;
}
public void setId(long id) {
this.id = id;
}
public double getBalance() {
System.out.println("哈哈~~~余额奥");
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public String getPassword() {
System.out.println("密码怎么能随意给你呢~~~你想太多了!");
return null;
}
public void setPassword(String password) {
if(password.length()==6){
this.password = password;
}else{
System.out.println("您输入的密码不是6位,请您重新输入!");
} } } package day4; public class Bank {
Account account=null;
//开户
/**
*
* @param id :账户
* @param password:账户密码
* @param type:账户类型
* @return
*/
public Account openAccount(long id, String password, int type){ if(type==0){
account = new Account(id,0,password);
}else if(type==1){
account = new SavingAccount(id,0,password,0.09);
}else if(type==2){
new CreditAccount(id, 0, password, 10000);
}else{
System.out.println("没有您需要的类型!");
}
return account;
}
//存款
public double deposit(Account a, double amount){
a.setBalance(amount+a.getBalance());
return a.getBalance();
}
//取款
public double withdraw(Account a, double amount){
if(a.getBalance()<amount && !(a instanceof CreditAccount) ){
System.out.println("您的余额不足,穷了吧~~~");
}
a.setBalance(a.getBalance()-amount);
return a.getBalance();
}
} package day4; public class CreditAccount extends Account{
private double creditLine; public CreditAccount() {
super();
// TODO Auto-generated constructor stub
} public CreditAccount(long id, double balance, String password,double creditLine) {
super(id, balance, password);
this.creditLine=creditLine;
// TODO Auto-generated constructor stub
} public double getCreditLine() {
return creditLine;
} public void setCreditLine(double creditLine) {
this.creditLine = creditLine;
} } package day4;
/**
*
* @author Administrator
* 储蓄账户
*/
public class SavingAccount extends Account{
private double interestRate; public SavingAccount() {
super();
} public SavingAccount(long id, double balance, String password,double interestRate) {
super(id, balance, password);
this.interestRate=interestRate;
} public double getInterestRate() {
return interestRate;
} public void setInterestRate(double interestRate) {
if(interestRate>0&&interestRate<0.1){
this.interestRate = interestRate;
}else{
System.out.println("利率给的不对~~~");
}
} } package day4; import java.util.Scanner; public class TestBank {
public static void main(String[] args) {
Bank bank = new Bank();
//开户
Scanner s = new Scanner(System.in);
System.out.println("请您输入账户名:");
int id=s.nextInt();
System.out.println("请您输入一个六位数字的密码");
String password=s.next();
System.out.println("请你输入开户类型:");
int type=s.nextInt();
Account account = bank.openAccount(id, password, type);
System.out.println(account.getId() +account.getPassword()+account.getBalance());
}
}
Java 练习(多态,instanceof)的更多相关文章
- java中的instanceof
instanceof是Java.php的一个二元操作符(运算符),和==,>,<是同一类东西.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是判断其左边对象是否为其右边类的实 ...
- 【Java基础】1、java中的instanceof
instanceof是Java.php的一个二元操作符(运算符),和==,>,<是同一类东西.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是判断其左边对象是否为其右边类的实 ...
- java 面向对象 — 多态
注意:如果用父类引用指向子类对象的时候.不可以调用,子类中有但是父类中没有的方法. 抽象 方法没有具体方法,以分号结束.例:public abstract void call(); 1.接口必须要有a ...
- 关于java中多态的理解
java三大特性:封装,继承,多态. 多态是java的非常重要的一个特性: 那么问题来了:什么是多态呢? 定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行 ...
- 深入Java核心 Java中多态的实现机制(1)
在疯狂java中,多态是这样解释的: 多态:相同类型的变量,调用同一个方法时,呈现出多中不同的行为特征, 这就是多态. 加上下面的解释:(多态四小类:强制的,重载的,参数的和包含的) 同时, 还用人这 ...
- 个人对Java中多态的一些简单理解
什么是多态 面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 多态的定义:指允许不同类的对象对同一消息做出响应.即同一 ...
- Java中多态的一些简单理解
什么是多态 .面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. .多态的定义:指允许不同类的对象对同一消息做出响应.即 ...
- Java 中的instanceof简单讲解
Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法:resu ...
- java 中的instanceof的用法
instanceof 运算符是Java.php的一个二元操作符(运算符),和==.>.<是同一类东西.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是判断其左边对象是否为其右 ...
- Java JVM 多态(动态绑定)
Java JVM 多态(动态绑定) @author ixenos 摘要:绑定.动态绑定实现多态.多态的缺陷.纯继承与扩展接口.向下转型与RTTI 绑定 将一个方法的调用和一个方法的主体关联起来,称作( ...
随机推荐
- FZU 1056 扫雷游戏
水题.统计一下周围有几个雷. #include<cstdio> #include<cstring> #include<cmath> #include<algo ...
- iOS开发中在UIWebView中添加Gif动态图
开发是一件很有趣的事,偶尔在程序中添加一些小东西,会给你的应用增色不少.比如,当你的某些功能暂时还不准备上线时,可以先一个放展示Gif动态图的UIWebView上去,既可以告诉用户APP以后会有的功能 ...
- Splay初步【bzoj1503】
做了一道水题,把bzoj1503用Splay重新写了一下. #include <bits/stdc++.h> #define rep(i, a, b) for (int i = a; i ...
- IOS开发-OC学习-protocol(协议)
在OC语言中,协议是一组方法,里面有两种方法,一种是遵守这个协议的类的实例必须实现的方法,另一种是可以实现也可以不实现的方法. 例如我定义一个学生的协议,这个协议里有两个方法,其中一个是必选的方法:学 ...
- UVa 11450 - Wedding shopping
题目大意:我们的朋友Bob要结婚了,所以要为他买一些衣服.有m的资金预算,要买c种类型的衣服(衬衫.裤子等),而每种类型的衣服有k个选择(只能做出一个选择),每个选择的衣服都有一个价格,问如何选择才能 ...
- 匿名函数里的this的执行环境和指向--javascript
重新看了下闭包,在javascript高级程序设计第二版里的闭包里有如下例子,例子中介绍说匿名函数的执行环境具有全局性和this指向window,对于这句话很费解,所以就想个方法验证下. var na ...
- 2781: [JSOI2007]文本生成器
2781: [JSOI2007]文本生成器 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 8 Solved: 4[Submit][Status][We ...
- UVa 10706 - Number Sequence
题目大意:Sk表示从1到k的字符序列,如S4为1234,现如今有如下的序列S1S2...Sk,形如1 12 123 1234这样的序列,给一个数n,让你去这个序列第n个位置上的数字. 可以构建出一个S ...
- Robocopy 轉帖
实例一:文件,想怎么复制就怎么复制 [实现效果] 随时将源文件夹中的纯文本(TXT).Word文档(DOC)还有BMP.TIF图像文件复制到目标文件夹中 ,这是在"资源管理器"中直 ...
- fastreport代码转
2016-07-08 //打印主从表数据 string file = Application.StartupPath @"\MasterDetail.frx"; rptMaster ...