String customerId
String accountNo
float balance
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邮箱,我再回给你。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)