java实现atm取款机
时间: 2024-10-13 07:04:28 浏览: 41
在Java中,我们可以创建一个简单的ATM(自动取款机)模拟器来演示多态的概念。首先,我们定义一个`BankAccount`接口,包含一些基本操作如存款、取款和查询余额:
```java
public interface BankAccount {
void deposit(double amount);
double withdraw(double amount) throws InsufficientFundsException;
double getBalance();
}
```
然后,我们可以创建几个实现了这个接口的具体账户类型,比如`SavingsAccount`和`CheckingAccount`,它们分别有自己的规则:
```java
public class SavingsAccount implements BankAccount {
private double balance;
@Override
public void deposit(double amount) {
balance += amount;
}
// ...其他方法的实现...
}
public class CheckingAccount extends SavingsAccount {
// 可能有额外的费用处理
@Override
public double withdraw(double amount) throws InsufficientFundsException {
if (amount <= getBalance()) {
return balance - applyWithdrawalFee(amount);
} else {
throw new InsufficientFundsException();
}
}
private double applyWithdrawalFee(double amount) {
return amount * 0.05; // 假设5%的费用
}
}
```
在主程序中,用户可以输入选择的操作,然后通过`BankAccount`接口调用对应的方法,实际操作的是具体账户类型:
```java
public static void main(String[] args) {
BankAccount account = new CheckingAccount();
account.deposit(1000); // 存款
try {
account.withdraw(500); // 取款
System.out.println("当前余额: " + account.getBalance());
} catch (InsufficientFundsException e) {
System.out.println("取款失败,余额不足!");
}
}
```
在这个例子中,虽然用户不知道具体的账户类型,但是可以根据`BankAccount`接口进行操作,这就是多态的体现。
阅读全文