1
、写一个名为
Account
的类模拟账户。该类的属性和方法如下图所示。该类包括的属性:
账号
id
,余额
balance
,年利率
annualInterestRate
;包含的方法:访问器方法(
getter
和
setter
方法),返回月利率的方法
getMonthlyInterest()
,取款方法
withdraw()
,存款方法
deposit()
。
写一个用户程序测试
Account
类。在用户程序中,创建一个账号为
1122
、余额为
20000
、
年利率
4.5%
的
Account
对象。使用
withdraw
方法提款
30000
元,并打印余额。
再使用
withdraw
方法提款
2500
元,使用
deposit
方法存款
3000
元,然后打印余额和月利
率。
2
、创建
Account
类的一个子类
CheckAccount
代表可透支的账户,该账户中定义一个属性
overdraft
代表可透支限额。在
CheckAccount
类中重写
withdraw
方法,其算法如下:
如果(取款金额
<
账户余额),
可直接取款
如果(取款金额
>
账户余额),
计算需要透支的额度
判断可透支额
overdraft
是否足够支付本次透支需要,如果可以
将账户余额修改为
0
,冲减可透支金额
如果不可以
提示用户超过可透支额的限额
要求:
写一个用户程序测试
CheckAccount
类。在用户程序中,创建一个账号为
1122
、余
额为
20000
、年利率
4.5%
,可透支限额为
5000
元的
CheckAccount
对象。
使用
withdraw
方法提款
5000
元,并打印账户余额和可透支额。
再使用
withdraw
方法提款
18000
元,并打印账户余额和可透支额。
再使用
withdraw
方法提款
3000
元,并打印账户余额和可透支额。
提示:
(
1
) 子类
CheckAccount
的构造方法需要将从父类继承的
3
个属性和子类自己的属性全
部初始化。
(
2
) 父类
Account
的属性
balance
被设置为
private
,但在子类
CheckAccount
的
withdraw
方法中需要修改它的值,因此应修改父类的
balance
属性,定义其为
protected
。
答:
import java.util.Scanner;
public class Customer {
private String firstName;
private String lastName;
private Account account;
public Customer(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public Account getAccount() {
return account;
}
public void setAccount(Account account) {
this.account = account;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
Customer c=new Customer("Jane","Smith");
c.account=new CheckAccount(1122,20000,0.045,5000);
c.account.withdraw(5000);
c.account.withdraw(18000);
c.account.withdraw(3000);
}
}
class CheckAccount extends Account{
private int overdraft;
public CheckAccount(int id, double balance, double annualInterestRate,int overdraft) {
super(id, balance, annualInterestRate);
this.overdraft = overdraft;
}
public void withdraw(double amount){
if (balance-amount<=0){
if (amount-balance<overdraft){
overdraft-=(amount-balance);
balance=0;
System.out.println("取款"+amount+"成功!");
System.out.println("余额:"+balance);
System.out.println("可透支额度:"+overdraft);
System.out.println();
}
else {
System.out.println("取款"+amount+"失败!");
System.out.println("超过可透支额度!");
System.out.println("余额:"+balance);
System.out.println("可透支额度:"+overdraft);
System.out.println();
}
}
else {
balance-=amount;
System.out.println("取款"+amount+"成功!");
System.out.println("余额为:"+balance);
System.out.println("可透支额度:"+overdraft);
System.out.println();
}
}
}
class Account {
protected int id;
protected double balance;
protected double 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 Account(){}
public Account(int id, double balance, double annualInterestRate) {
this.id = id;
this.balance = balance;
this.annualInterestRate = annualInterestRate;
}
public void withdraw (double amount){
if (balance-amount<0){
System.out.println("余额不足!取款失败!");
System.out.println("余额为:"+balance);
}
else {
balance-=amount;
System.out.println("取款"+amount+"成功!");
System.out.println("余额为:"+balance);
}
}
public void deposit (double amount){
balance+=amount;
System.out.println("存款"+amount+"成功!");
System.out.println("余额为:"+balance);
}
}
取款5000.0成功!
余额为:15000.0
可透支额度:5000
取款18000.0成功!
余额:0.0
可透支额度:2000
取款3000.0失败!
超过可透支额度!
余额:0.0
可透支额度:2000