题目要求
(1)声明一个银行储蓄卡类,
- 包含属性:账户id,余额balance
- 包含取款 public void withdraw(double money)
- 存款 pubic void save(double money)
- 获取账户信息: public String getInfo() 可以返回账户和余额
(2) 声明一个银行信用卡类,继承储蓄卡类
- 增加属性:可透支额度,最多可透支金额
- 重写存款 public void withdraw(double money),可透支
- 存款 pubic void save(double money),需要恢复可透支额度
- 可修改额度
(1)声明一个银行储蓄卡类
package practice.practice01bank;
/**
* @author lin's
* @program se
* @description 声明一个银行储蓄卡类,
* 包含属性:账户id,余额balance
* 包含取款 public void withdraw(double money)
* 存款 pubic void save(double money)
* 获取账户信息: public String getInfo() 可以返回账户和余额
*/
public class SavingsAccount {
private int id;
private double balance = 0;
public SavingsAccount() {
}
public SavingsAccount(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
/**
* @param money 取款的钱
*/
public void withdraw(double money) {
if (money <= balance)
balance -= money;
else
System.out.println("余额不足");
}
/**
* @param money 存款的钱
*/
public void save(double money) {
balance += money;
}
/**
* @return 账户信息
*/
public String getInfo() {
if (getId() == 0) {
return "没有用户信息";
}
return "账户ID:" + id +
", 余额:" + balance;
}
}
//测试类
/*
class test {
}*/
(2) 声明一个银行信用卡类,继承储蓄卡类
package practice.practice01bank;
/**
* @author lin's
* @program se
* @description (2)声明一个银行信用卡类,继承储蓄卡类
* 增加属性:可透支额度,最多可透支金额
* 重写存款 public void withdraw(double money),可透支
* 存款 pubic void save(double money),需要恢复可透支额度
* 可修改额度
*/
public class CreditCard extends SavingsAccount {
//额度
private double creditLine;
//最大透支金额
private double maxOverdraft = creditLine;
public CreditCard() {
}
public CreditCard(double creditLine) {
this.creditLine = creditLine;
this.maxOverdraft = creditLine;
}
public CreditCard(int id, double creditLine) {
super(id);
this.creditLine = creditLine;
this.maxOverdraft = creditLine;
}
public double getCreditLine() {
return creditLine;
}
//设置 额度 和 最大透支金额
public void setCreditLine(double creditLine) {
//计算形参额度和当前额度的差值
double flag = creditLine - this.creditLine;
//更改当前额度
this.creditLine = creditLine;
//更改当前最大透支额度
this.maxOverdraft += flag;
}
public double getMaxOverdraft() {
return maxOverdraft;
}
/**
* @return 信用卡客户的信息
*/
@Override
public String getInfo() {
if (getId() == 0)
return "没有用户信息";
return "账户ID:" + getId() +
", 余额:" + getBalance() +
", 最大透支金额" + maxOverdraft +
", 信用卡额度:" + creditLine;
}
//其他业务
/**
* 取款(可透支)
*
* @param money 取款的钱
*/
@Override
public void withdraw(double money) {
//取款小于余额
if (money <= getBalance()) {
//设置余额,最大透支额度不变
setBalance(getBalance() - money);
// System.out.println("当前余额" + getBalance() + "最大透支额度" + maxOverdraft);
}
//取款大于余额,小于余额与最大透支金额之和
if (money > getBalance() && money < maxOverdraft + getBalance()) {
//重置最大透支额度
maxOverdraft -= money - getBalance();
//重置余额为0
setBalance(0);
}
}
/**
* @param money 存款的钱
*/
@Override
public void save(double money) {
//存的钱大于透支的金额
if (money > creditLine - maxOverdraft) {
//设置余额 = 当前余额 + 存款 - 欠的钱
setBalance(getBalance() + money - (creditLine - maxOverdraft));
maxOverdraft = creditLine;
}
//存入的钱小于透支的金额
else
maxOverdraft += money;
}
}