// 抽象クラス BankAccount
abstract class BankAccount {
// 抽象メソッド deposit を宣言
public abstract void deposit(double amount);
// 抽象メソッド withdraw を宣言
public abstract void withdraw(double amount);
}
// 具象クラス SavingsAccount
class SavingsAccount extends BankAccount {
private double balance;
// コンストラクタ
public SavingsAccount(double initialBalance) {
this.balance = initialBalance;
}
// deposit メソッドの実装
@Override
public void deposit(double amount) {
balance += amount;
System.out.println("Deposited: $" + amount);
}
// withdraw メソッドの実装
@Override
public void withdraw(double amount) {
if (amount <= balance) {
balance -= amount;
System.out.println("Withdrawn: $" + amount);
} else {
System.out.println("Insufficient funds for withdrawal.");
}
}
// 残高を取得するメソッド
public double getBalance() {
return balance;
}
}
// 具象クラス CheckingAccount
class CheckingAccount extends BankAccount {
private double balance;
// コンストラクタ
public CheckingAccount(double initialBalance) {
this.balance = initialBalance;
}
// deposit メソッドの実装
@Override
public void deposit(double amount) {
balance += amount;
System.out.println("Deposited: $" + amount);
}
// withdraw メソッドの実装
@Override
public void withdraw(double amount) {
if (amount <= balance) {
balance -= amount;
System.out.println("Withdrawn: $" + amount);
} else {
System.out.println("Insufficient funds for withdrawal.");
}
}
// 残高を取得するメソッド
public double getBalance() {
return balance;
}
}
// メインクラス
public class Main {
public static void main(String[] args) {
// SavingsAccount クラスの利用例
SavingsAccount savingsAccount = new SavingsAccount(1000);
savingsAccount.deposit(500);
savingsAccount.withdraw(200);
System.out.println("Savings Account Balance: $" + savingsAccount.getBalance());
// CheckingAccount クラスの利用例
CheckingAccount checkingAccount = new CheckingAccount(500);
checkingAccount.deposit(300);
checkingAccount.withdraw(800);
System.out.println("Checking Account Balance: $" + checkingAccount.getBalance());
}
}
このコードでは、BankAccount
クラスが抽象メソッド deposit
と withdraw
を宣言しています。それを継承する具象クラス SavingsAccount
と CheckingAccount
が、それぞれの銀行口座の動作を実装しています。Main
クラスでそれぞれの銀行口座を利用して、預金や引き出しの操作を行い、残高が表示される様子が示されています。
出力結果:
Deposited: $500
Withdrawn: $200
Savings Account Balance: $1300
Deposited: $300
Insufficient funds for withdrawal.
Checking Account Balance: $800
それぞれの口座に対して、預金や引き出しの操作が行われ、最終的な残高が表示されています。