016 抽象クラス(抽象メソッドと具象メソッド) 010 解答例

// 抽象クラス 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 クラスが抽象メソッド depositwithdraw を宣言しています。それを継承する具象クラス SavingsAccountCheckingAccount が、それぞれの銀行口座の動作を実装しています。Main クラスでそれぞれの銀行口座を利用して、預金や引き出しの操作を行い、残高が表示される様子が示されています。

出力結果:

Deposited: $500
Withdrawn: $200
Savings Account Balance: $1300

Deposited: $300
Insufficient funds for withdrawal.
Checking Account Balance: $800

それぞれの口座に対して、預金や引き出しの操作が行われ、最終的な残高が表示されています。

「016 抽象クラス」問題集リスト