用java语言使用继承方法,实现一个银行账户管理
时间: 2024-11-15 21:26:48 浏览: 2
在Java中,我们可以使用继承机制来创建一个银行账户管理系统,通过定义一个基础的`Account`类,然后让具体的`SavingsAccount`和`CheckingAccount`等子类继承这个基础类。以下是简单的例子:
```java
// 基础 Account 类
public abstract class Account {
private String accountNumber;
private double balance;
// 构造函数、getter和setter
public Account(String accountNumber, double initialBalance) {
this.accountNumber = accountNumber;
setBalance(initialBalance);
}
public String getAccountNumber() { return accountNumber; }
public void setAccountNumber(String accountNumber) { this.accountNumber = accountNumber; }
public double getBalance() { return balance; }
public void setBalance(double balance) { this.balance = balance; }
// 抽象的存款和取款方法,子类需要实现具体操作
public abstract void deposit(double amount);
public abstract void withdraw(double amount);
// 简单的转账方法,提供基本逻辑
public void transfer(Account other, double amount) {
if (amount > getBalance()) {
throw new InsufficientFundsException();
} else {
withdraw(amount);
other.deposit(amount);
}
}
}
// 子类 SavingsAccount 和 CheckingAccount 继承自 Account
class SavingsAccount extends Account {
// 实现抽象方法,例如储蓄存款利息计算
@Override
public void deposit(double amount) {
super.deposit(amount);
// 计算并增加利息
setBalance(getBalance() + calculateInterest(amount));
}
private double calculateInterest(double deposit) {
// 假设的简单利息算法
return deposit * 0.05;
}
}
class CheckingAccount extends Account {
// 实现抽象方法,例如无利息的活期存款
@Override
public void deposit(double amount) {
super.deposit(amount);
}
// 取款逻辑可能更复杂,比如可能涉及交易费用
@Override
public void withdraw(double amount) {
if (withdrawalFee(amount)) {
setBalance(getBalance() - amount);
} else {
throw new OverdraftException();
}
}
private boolean withdrawalFee(double amount) {
if (amount < 100) return false; // 小额免手续费
return true;
}
}
// 相关问题--
1. 能否解释一下为什么要设计成抽象类?
2. 如果我想添加新的账户类型,应该如何做?
3. 这种设计如何提高代码的复用性和灵活性?》</code></pre>
</details>
阅读全文