编程Account.java:在其中编写一个名为编写Account 类。

编程Account.java:在其中编写一个名为编写Account 类。,第1张

public class Account {

String customerId

String accountNo

float balance

// 构造方法有身份z号、账户号及余额三个参数

public Account(String customerId, String accountNo, float balance) {

this.customerId = customerId

this.accountNo = accountNo

if (balance < 0) {

System.out.println("余额不能为负")

} else {

this.balance = balance

}

}

// 构造方法只有身份z号、账户号 二个参数,余额初始化为零

public Account(String customerId, String accountNo) {

this.customerId = customerId

this.accountNo = accountNo

this.balance = 0

}

// 存款

public void deposit(float amount) {

this.balance += amount

}

// 取款

public void withdraw(float amount) {

if (amount > balance) {//取款数额大于余额

System.out.println("没有那么多的钱")

return

}

this.balance -= amount

}

// 查询余额

public float getBalance() {

return this.balance

}

}

我帮你一共写了四个类,一个账户Account类,两个账户类的子类(xyk账户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)

}}

-------------------------------------------------

/**

* xyk账户。

*

* 可以透支。

* @author CodingMouse

* @version 1.0

*/

public class CreditCardAccount extends Account { private double overdraftLimit // 透支限度

/**

* 重载构造器。

*

* 便于构建可透支的xyk账户实例。

* @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))

// 创建一个可以透支的xyk账户。

System.out.println("------------ xyk账户 ------------")

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

------------ xyk账户 ------------

取90元的结果:true

取120元的结果:true

取160元的结果:false ----------------------------------------- 这个题目只是简单考查了下封装、继承、多态三大面向对象特性,我提供的代码仅作参考。 如果你懒得复制,想要程序源代码文件或有不明白的地方,可以发邮件到我QQ邮箱,我再回给你。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7931147.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存