案例
- 写一个用户程序测试Account类,在用户程序中,
- 创建一个账号为1122、余额为20000、年利率4.5%的Account对象
- 使用withdraw方法提取30000元,并打印余额
- 在使用withdraw方法取款2500元
- 使用deposit方法存款3000元,然后打印余额和月利率
public class Account {
private int id;//账号
private double balance;//余额
private double annualInterestRate;//年利率
public Account(int id, double balance, double annualInterestRate) {
super();
this.id = id;
this.balance = balance;
this.annualInterestRate = annualInterestRate;
}
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;
}
public double getAnnualInterestRate() {
return annualInterestRate;
}
public void setAnnualInterestRate(double annualInterestRate) {
this.annualInterestRate = annualInterestRate;
}
//返回月利率
public double getMonthlyInterest(){
return annualInterestRate / 12;
}
//取钱
public void withdraw(double amount){
if(balance >= amount){
balance -= amount;
return;
}
System.out.println("余额不足");
}
//存钱
public void deposit(double amount){
if (amount > 0){
balance += amount;
}
}
}
public class AccountTest {
public static void main(String[] args) {
Account acct = new Account(1122, 20000, 0.045);
acct.withdraw(30000);
System.out.println("您的账户余额为:" + acct.getBalance());
acct.withdraw(2500);
System.out.println("您的账户余额为:" + acct.getBalance());
acct.deposit(3000);
System.out.println("您的账户余额为:" + acct.getBalance());
System.out.println("月利率为:" + acct.getAnnualInterestRate() * 100 + "%");
}
}
案例
-
创建Account类的一个子类CheckAccount代表可透支的账户,该账户中定义一个属性overdraft代表可以透支限额
-
在CheckAccount类中重写withdraw方法,算法如下:
-
如果(取款金额<账户金额),
-
可直接取款
-
如果(取款金额>账户金额),
-
计算需要透支的额度
-
判断可透支额overdraft是否足够支付本次透支需要,如果可以,将账户余额修改为0,冲减可透支金额
-
如果不可以,提示用户超过可透支额的限额
-
写一个用户程序测试CheckAccount类,在用户程序中,
-
创建一个账号为1122、余额为20000、年利率4.5%的CheckAccount对象
-
使用withdraw方法提取5000元,并打印余额和可透支额
-
在使用withdraw方法取款18000元,并打印余额和可透支额
-
使用withdraw方法取款3000元,并打印余额和可透支额
public class CheckAccount extends Account{
private double overdraft;//可透支限额
public CheckAccount(int id, double balance, double annualInterestRate, double overdraft){
super(id, balance, annualInterestRate);
this.overdraft = overdraft;
}
public double getOverdraft() {
return overdraft;
}
public void setOverdraft(double overdraft) {
this.overdraft = overdraft;
}
@Override
public void withdraw(double amount) {
if(getBalance() >= amount){//余额足够消费
//方式一
// setBalance(getBalance() - amount);
//方式二
super.withdraw(amount);
}else if(overdraft >= (amount - getBalance())){//透支范围内足够消费
overdraft -= (amount - getBalance());
setBalance(0);
//方式二
// super.withdraw(getBalance());
}else{
System.out.println("超过可透支限额!");
}
}
}
public class CheckAccountTest {
public static void main(String[] args) {
CheckAccount acct = new CheckAccount(1122, 20000, 0.045, 5000);
acct.withdraw(5000);
System.out.println("您的账户余额为:" + acct.getBalance());
System.out.println("您的可透支额为:" + acct.getOverdraft());
acct.withdraw(18000);
System.out.println("您的账户余额为:" + acct.getBalance());
System.out.println("您的可透支额为:" + acct.getOverdraft());
acct.withdraw(3000);
System.out.println("您的账户余额为:" + acct.getBalance());
System.out.println("您的可透支额为:" + acct.getOverdraft());
}
}