/** * ドメイン非依存URL出力フィルタ * javadrill.tech移行時はwp_options.home/siteurlのみ変更すればよい * * データベースには絶対URL(https://minner.asia)を保持し、 * 表示時に現在のドメイン(home_url())に動的変換する */ function javadrill_make_urls_dynamic($content) { if (empty($content)) { return $content; } // データベース内の絶対URLを現在のhome_url()に置換 $old_url = 'https://minner.asia'; $new_url = untrailingslashit(home_url()); // http版も対応(念のため) $content = str_replace($old_url, $new_url, $content); $content = str_replace('http://minner.asia', $new_url, $content); return $content; } // 投稿本文、ウィジェット、タームの説明、抜粋に適用 add_filter('the_content', 'javadrill_make_urls_dynamic', 20); add_filter('widget_text', 'javadrill_make_urls_dynamic', 20); add_filter('term_description', 'javadrill_make_urls_dynamic', 20); add_filter('get_the_excerpt', 'javadrill_make_urls_dynamic', 20); 016 抽象クラス(抽象メソッドと具象メソッド) 010 解答例 | Javaドリル

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

016-010 016 抽象クラス
// 抽象クラス 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

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

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

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

コメント

タイトルとURLをコピーしました