JAVA 编程创建Account 类模拟银行账户。

创建Account 类模拟银行账户。一个账户有帐号、余额、年利息率等属性,有存款和取款等方法。创建两个子类,用于信用卡账户和借记卡账户。信用卡账户有一个透支限制,但借记卡账户就不能透支。

我帮你一共写了四个类,一个账户Account类,两个账户类的子类(信用卡账户CreditCardAccount类和借记卡DebitCardAccount类),另外再加上一个演示透支效果测试Test类。 代码贴在下面:
/**
* 账户类。
*
* @author CodingMouse
* @version 1.0
*/
public abstract class Account { protected String accountNumber; // 账号
protected double overage; // 余额
protected double annualInterestRate; // 年利率

/**
* 参数化构造器方法。
*
* 用于开户。
* @param accountNumber 预设账号
* @param overage 初始余额
* @param annualInterestRate 预设年利率
*/
public Account(String accountNumber, double overage, double annualInterestRate) {
super();
// 设定账号。
this.accountNumber = accountNumber;
// 设定初始余额,至少为零。
this.overage = overage >= 0 ? overage : 0;
// 设定年利率,至少为零。
this.annualInterestRate = annualInterestRate >= 0 ? annualInterestRate : 0;
}

/**
* 查询账号。
* @return 返回账号。
*/
public String getAccountNumber() {
return this.accountNumber;
}

/**
* 设置账号。
* @param accountNumber 新账号。
*/
public void setAccountNumber(String accountNumber) {
this.accountNumber = accountNumber;
} /**
* 查询余额方法。
* @return 返回账户余额。
*/
public double getOverage() {
return this.overage;
} /**
* 存款方法。
* @param money 要存入的金额。
* @return 返回true时存款成功,否则存款失败。
*/
public boolean depositMoney(double money) {
// 如果金额小于零,则不能存款
if (money <= 0)
return false;
// 否则将相应的金额累加到账户余额中
this.overage += money;
return true;
}

/**
* 取款方法。
*
* 默认不能透支。
* @param money 要取出的金额。
* @return 返回true时取款成功,否则取款失败。
*/
public boolean drawMoney(double money) {
// 如果账户余额不足,则不能取款
if (this.overage < money)
return false;
// 否则从账户余额中扣除相应的金额
this.overage -= money;
return true;
} /**
* 查询年利率。
* @return 返回年利率。
*/
public double getAnnualInterestRate() {
return this.annualInterestRate;
} /**
* 设置年利率。
* @param annualInterestRate 新的年利率。
*/
public void setAnnualInterestRate(double annualInterestRate) {
this.annualInterestRate = annualInterestRate;
}

}
--------------------------------------------------
/**
* 借记卡账户。
*
* 不能透支。
* @author CodingMouse
* @version 1.0
*/
public class DebitCardAccount extends Account { /**
* 重写父类构造器。
* @param accountNumber 预设账号
* @param overage 初始余额
* @param annualInterestRate 预设年利率
*/
public DebitCardAccount(String accountNumber, double overage,
double annualInterestRate) {
super(accountNumber, overage, annualInterestRate);
}}
-------------------------------------------------
/**
* 信用卡账户。
*
* 可以透支。
* @author CodingMouse
* @version 1.0
*/
public class CreditCardAccount extends Account { private double overdraftLimit; // 透支限度

/**
* 重载构造器。
*
* 便于构建可透支的信用卡账户实例。
* @param accountNumber 预设账号
* @param overage 初始余额
* @param annualInterestRate 预设年利率
* @param overdraftLimit 透支限度
*/
public CreditCardAccount(String accountNumber, double overage,
double annualInterestRate, double overdraftLimit) {
super(accountNumber, overage, annualInterestRate);
this.overdraftLimit = overdraftLimit;
} /**
* 查询透支限度的方法。
* @return 透支限度金额。
*/
public double getOverdraftLimit() {
return this.overdraftLimit;
} /**
* 设置透支限度的方法。
* @param overdraftLimit 新的透支限度金额。
*/
public void setOverdraftLimit(double overdraftLimit) {
// 透支限度必须为零和正数,否则为零。
this.overdraftLimit = overdraftLimit >= 0 ? overdraftLimit : 0;
} /**
* 重写父类构造器。
* @param accountNumber 预设账号
* @param overage 初始余额
* @param annualInterestRate 预设年利率
*/
public CreditCardAccount(String accountNumber, double overage,
double annualInterestRate) {
super(accountNumber, overage, annualInterestRate);
} /**
* 重写父类取款方法。
*
* 将默认不能透支的取款改为可以透支的取款。
* @param money 要取出的金额。
* @return 返回true时取款成功,否则取款失败。
*/
@Override
public boolean drawMoney(double money) {
// 如果账户余额 + 透支限度的总金额仍不足,则不能取款
if (this.overage + this.overdraftLimit < money)
return false;
// 否则从账户余额中扣除相应的金额
this.overage -= money;
return true;
}}
------------------------------------------
/**
* 测试账户使用。
*
* @author CodingMouse
* @version 1.0
*/
public class Test { /**
* 主程序方法。
* @param args 入口参数。
*/
public static void main(String[] args) {

// 创建一个不能透支的借记卡账户。
System.out.println("------------ 借记卡账户 ------------");
DebitCardAccount debitCardAccount = new DebitCardAccount("CHK20100117001", 100, 0.02);
// 初始余额有100元,调用并打印取90元和取120元的结果。
System.out.println("取90元的结果:" + debitCardAccount.drawMoney(90));
// 重新存入90元
debitCardAccount.depositMoney(90);
System.out.println("取120元的结果:" + debitCardAccount.drawMoney(120));

// 创建一个可以透支的信用卡账户。
System.out.println("------------ 信用卡账户 ------------");
CreditCardAccount crebitCardAccount = new CreditCardAccount("CHK20100117002", 100, 0.03, 50);
// 初始余额有100元,并且透支限度为50元,调用并打印取90元、取120元和取160元的结果。
System.out.println("取90元的结果:" + crebitCardAccount.drawMoney(90));
// 重新存入90元
crebitCardAccount.depositMoney(90);
System.out.println("取120元的结果:" + crebitCardAccount.drawMoney(120));
// 重新存入120元
crebitCardAccount.depositMoney(120);
System.out.println("取160元的结果:" + crebitCardAccount.drawMoney(160));

}

}
-------------------------------------- 在我机器上的测试打印结果为: ------------ 借记卡账户 ------------
取90元的结果:true
取120元的结果:false
------------ 信用卡账户 ------------
取90元的结果:true
取120元的结果:true
取160元的结果:false ----------------------------------------- 这个题目只是简单考查了下封装、继承、多态三大面向对象特性,我提供的代码仅作参考。 如果你懒得复制,想要程序源代码文件或有不明白的地方,可以发邮件到我QQ邮箱,我再回给你。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答