/** * ドメイン非依存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 抽象クラス | Javaドリル https://minner.asia 楽々学べるJavaの問題集 Fri, 05 Sep 2025 02:07:43 +0000 ja hourly 1 https://wordpress.org/?v=6.8.3 https://minner.asia/wp-content/uploads/2023/10/cropped-logo-32x32.png 016 抽象クラス | Javaドリル https://minner.asia 32 32 016 抽象クラス(ポリモーフィズムと抽象クラス) 013 解答例 https://minner.asia/archives/3695 https://minner.asia/archives/3695#respond Tue, 12 Dec 2023 22:07:21 +0000 http://localhost/?p=3695
// 抽象クラス Employee
abstract class Employee {
    // 抽象メソッド calculateSalary を宣言
    public abstract double calculateSalary();
}

// 具象クラス Manager
class Manager extends Employee {
    private double baseSalary;
    private double bonus;

    // コンストラクタ
    public Manager(double baseSalary, double bonus) {
        this.baseSalary = baseSalary;
        this.bonus = bonus;
    }

    // calculateSalary メソッドの実装
    @Override
    public double calculateSalary() {
        return baseSalary + bonus;
    }
}

// 具象クラス Developer
class Developer extends Employee {
    private double hourlyRate;
    private int hoursWorked;

    // コンストラクタ
    public Developer(double hourlyRate, int hoursWorked) {
        this.hourlyRate = hourlyRate;
        this.hoursWorked = hoursWorked;
    }

    // calculateSalary メソッドの実装
    @Override
    public double calculateSalary() {
        return hourlyRate * hoursWorked;
    }
}

// メインクラス
public class Main {
    public static void main(String[] args) {
        // Employee 型の配列を作成
        Employee[] employees = new Employee[2];

        // Manager インスタンスを配列に格納
        employees[0] = new Manager(50000, 10000);

        // Developer インスタンスを配列に格納
        employees[1] = new Developer(25, 160);

        // ポリモーフィズムを使用して異なる従業員の給与を表示
        for (Employee employee : employees) {
            System.out.println("Employee's Salary: $" + employee.calculateSalary());
        }
    }
}

このコードでは、Employee クラスが抽象メソッド calculateSalary を宣言し、Manager と Developer クラスがそれをオーバーライドしています。そして、Employee 型のリストに Manager と Developer のインスタンスを格納し、ポリモーフィズムを使用して給与を表示しています。

出力結果:

Employee's Salary: $60000.0
Employee's Salary: $4000.0

ここで、Manager クラスのインスタンスの給与は基本給(baseSalary)とボーナス(bonus)の合計であり、Developer クラスのインスタンスの給与は時給(hourlyRate)と働いた時間(hoursWorked)の積です。

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

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/3695/feed 0
016 抽象クラス(ポリモーフィズムと抽象クラス) 013 問題 https://minner.asia/archives/3694 https://minner.asia/archives/3694#respond Tue, 12 Dec 2023 22:06:53 +0000 http://localhost/?p=3694

問題

抽象クラス Employee を定義し、calculateSalary という抽象メソッドを宣言します。
具象クラス Manager と Developer を作成し、Employee を拡張します。
Manager と Developer はそれぞれ calculateSalary メソッドをオーバーライドして、給与を計算します。
ポリモーフィズムを使用して、Employee 型の配列を作成し、異なる従業員の給与を表示します。

ヒント

  1. Employee クラスを抽象クラスとして定義します。このクラスには calculateSalary という抽象メソッドを宣言します。
  2. Manager クラスを作成し、Employee を拡張します。Manager クラスには給与に関する情報(例: 基本給とボーナス)が含まれます。calculateSalary メソッドをオーバーライドして、Manager の給与を計算します。
  3. 同様に、Developer クラスを作成し、Employee を拡張します。Developer クラスには給与に関する情報(例: 時給と勤務時間)が含まれます。calculateSalary メソッドをオーバーライドして、Developer の給与を計算します。
  4. Employee 型のリストを作成します。このリストには Manager インスタンスと Developer インスタンスが含まれます。
  5. ポリモーフィズムを使用して、Employee 型のリストの各要素にアクセスし、calculateSalary メソッドを呼び出して給与を表示します。

これにより、Manager および Developer の給与計算が、共通の Employee インターフェースを通じて処理されることになります。

→解答例

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

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/3694/feed 0
016 抽象クラス(ポリモーフィズムと抽象クラス) 012 解答例 https://minner.asia/archives/3689 https://minner.asia/archives/3689#respond Tue, 12 Dec 2023 12:36:01 +0000 http://localhost/?p=3689
import java.util.ArrayList;
import java.util.List;

// 抽象クラス Shape
abstract class Shape {
    // 抽象メソッド calculateArea を宣言
    public abstract double calculateArea();
}

// 具象クラス Circle
class Circle extends Shape {
    private double radius;

    // コンストラクタ
    public Circle(double radius) {
        this.radius = radius;
    }

    // calculateArea メソッドのオーバーライド
    @Override
    public double calculateArea() {
        return Math.PI * radius * radius;
    }
}

// 具象クラス Rectangle
class Rectangle extends Shape {
    private double length;
    private double width;

    // コンストラクタ
    public Rectangle(double length, double width) {
        this.length = length;
        this.width = width;
    }

    // calculateArea メソッドのオーバーライド
    @Override
    public double calculateArea() {
        return length * width;
    }
}

// メインクラス
public class Main {
    public static void main(String[] args) {
        // Shape 型のリストを作成
        List<Shape> shapes = new ArrayList<>();

        // Circle インスタンスをリストに追加
        shapes.add(new Circle(5.0));

        // Rectangle インスタンスをリストに追加
        shapes.add(new Rectangle(4.0, 6.0));

        // ポリモーフィズムを使用して異なる形状の面積を計算して表示
        for (Shape shape : shapes) {
            System.out.println("Area: " + shape.calculateArea());
        }
    }
}

このコードでは、抽象クラス Shape を定義し、具象クラス Circle と Rectangle がそれを拡張しています。各具象クラスでは calculateArea メソッドをオーバーライドし、ポリモーフィズムを使用してShape 型のリストに異なる形状のインスタンスを追加しています。そして、リスト内の各形状の面積を計算して表示しています。

実行結果:

Area: 78.53981633974483
Area: 24.0               

これは、Shape 型のリストに含まれる各要素(Circle および Rectangle)の calculateArea メソッドが正しく呼び出され、それぞれの面積が計算されて表示されていることを示しています。

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

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/3689/feed 0
016 抽象クラス(ポリモーフィズムと抽象クラス) 012 問題 https://minner.asia/archives/3685 https://minner.asia/archives/3685#respond Mon, 11 Dec 2023 23:28:42 +0000 http://localhost/?p=3685

問題

抽象クラス Shape を定義し、calculateArea という抽象メソッドを宣言します。
具象クラス Circle と Rectangle を作成し、Shape を拡張します。
Circle と Rectangle はそれぞれ calculateArea メソッドをオーバーライドして、円と長方形の面積を計算します。
ポリモーフィズムを使用して、Shape 型のリストを作成し、異なる形状の面積を計算して表示します。

ヒント

  1. Shape クラスを定義し、その中に calculateArea という抽象メソッドを宣言します。
  2. 具象クラス Circle と Rectangle を作成し、それぞれ Shape を拡張します。Circle と Rectangle では calculateArea メソッドをオーバーライドして、円と長方形の面積を計算します。
  3. Shape 型のリストを作成し、異なる形状のインスタンスを格納します。
  4. 拡張forループを使用して、各形状の面積を計算して表示します。

→解答例

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

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/3685/feed 0
016 抽象クラス(ポリモーフィズムと抽象クラス) 011 解答例 https://minner.asia/archives/3679 https://minner.asia/archives/3679#respond Mon, 11 Dec 2023 23:26:04 +0000 http://localhost/?p=3679
// 抽象クラス Animal
abstract class Animal {
    public abstract void makeSound();
}

// 具象クラス Dog
class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Woof! Woof!");
    }
}

// 具象クラス Cat
class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Meow! Meow!");
    }
}

// メインクラス
public class Main {
    public static void main(String[] args) {
        // Animal 型の配列を作成
        Animal[] animals = new Animal[2];

        // Dog インスタンスを配列に格納
        animals[0] = new Dog();

        // Cat インスタンスを配列に格納
        animals[1] = new Cat();

        // ポリモーフィズムを使用して異なる種類の動物のサウンドを出力
        for (Animal animal : animals) {
            animal.makeSound();
        }
    }
}

このプログラムでは、Animal 抽象クラスを定義し、その中に makeSound 抽象メソッドがあります。Dog と Cat クラスはそれぞれ Animal を拡張して、makeSound メソッドをオーバーライドしています。Main クラスでは、Animal 型の配列を作成し、異なる種類の動物のサウンドをポリモーフィズムを使って表示しています。

出力結果:

Woof! Woof!
Meow! Meow!

このプログラムでは、Animal 型の配列 animals を作成し、その中に Dog インスタンスと Cat インスタンスを格納しています。その後、拡張forループを使用して配列内の各要素に対して makeSound メソッドを呼び出しています。

配列の1番目の要素は Dog インスタンスであり、makeSound メソッドが呼び出されると "Woof! Woof!" が出力されます。配列の2番目の要素は Cat インスタンスであり、同様に makeSound メソッドが呼び出されると "Meow! Meow!" が出力されます。

これがポリモーフィズムの一例です。

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

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/3679/feed 0
016 抽象クラス(ポリモーフィズムと抽象クラス) 011 問題 https://minner.asia/archives/3677 https://minner.asia/archives/3677#respond Mon, 11 Dec 2023 23:20:32 +0000 http://localhost/?p=3677

問題

抽象クラス Animal を定義し、makeSound という抽象メソッドを宣言します。
具象クラス Dog と Cat を作成し、Animal を拡張します。
Dog と Cat はそれぞれ makeSound メソッドをオーバーライドして、吠え声と鳴き声を表示します。
ポリモーフィズムを使用して、Animal 型の配列を作成し、異なる種類の動物のサウンドを出力します。

ヒント

  1. 抽象クラス Animal の定義:
    • Animal クラスを作成し、makeSound という抽象メソッドを宣言します。このメソッドは動物の音を出力します。
  2. 具象クラス Dog と Cat の定義:
    • Dog クラスを作成し、Animal クラスを拡張します。makeSound メソッドをオーバーライドして、犬の吠え声を表示します。
    • 同様に、Cat クラスを作成し、Animal クラスを拡張します。makeSound メソッドをオーバーライドして、猫の鳴き声を表示します。
  3. ポリモーフィズムのデモ:
    • Animal 型の配列を作成し、その配列に Dog インスタンスと Cat インスタンスを格納します。
    • ループを使用して配列内の各要素にアクセスし、makeSound メソッドを呼び出して各動物の音を表示します。

これにより、抽象クラス、具象クラス、およびポリモーフィズムの概念を学ぶことができます。

→解答例

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

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/3677/feed 0
016 抽象クラス(抽象メソッドと具象メソッド) 010 解答例 https://minner.asia/archives/3658 https://minner.asia/archives/3658#respond Mon, 11 Dec 2023 22:33:52 +0000 http://localhost/?p=3658
// 抽象クラス 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で実際に手を動かして学習できます

]]>
https://minner.asia/archives/3658/feed 0
016 抽象クラス(抽象メソッドと具象メソッド) 010 問題 https://minner.asia/archives/3655 https://minner.asia/archives/3655#respond Mon, 11 Dec 2023 22:30:19 +0000 http://localhost/?p=3655

問題

抽象クラス BankAccount を定義し、deposit(double amount) と withdraw(double amount) という抽象メソッドを宣言します。
具象クラス SavingsAccount と CheckingAccount を作成し、それぞれのメソッドを実装します。

ヒント

  1. 抽象クラス BankAccount の定義:
    • BankAccount クラスを作成し、deposit(double amount) と withdraw(double amount) という抽象メソッドを宣言します。
  2. 具象クラス SavingsAccount の作成:
    • SavingsAccount クラスを作成し、BankAccount クラスを継承します。
    • deposit(double amount) メソッドをオーバーライドして、預金の動作を実装します。
    • withdraw(double amount) メソッドをオーバーライドして、引き出しの動作を実装します。
  3. 具象クラス CheckingAccount の作成:
    • CheckingAccount クラスを作成し、BankAccount クラスを継承します。
    • deposit(double amount) メソッドをオーバーライドして、預金の動作を実装します。
    • withdraw(double amount) メソッドをオーバーライドして、引き出しの動作を実装します。
  4. テスト:
    • メインプログラムやテストクラスを作成して、SavingsAccount クラスと CheckingAccount クラスのメソッドが期待通りに機能するか確認します。

これによって、抽象クラスと具象クラスの関係や、抽象メソッドの実装に慣れることができます。

→解答例

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

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/3655/feed 0
016 抽象クラス(抽象メソッドと具象メソッド) 009 解答例 https://minner.asia/archives/3652 https://minner.asia/archives/3652#respond Mon, 11 Dec 2023 22:27:25 +0000 http://localhost/?p=3652
// 抽象クラス Employee
abstract class Employee {
    // 抽象メソッド calculateSalary を宣言
    public abstract double calculateSalary();
}

// 具象クラス Manager
class Manager extends Employee {
    private double baseSalary;
    private double bonus;

    // コンストラクタ
    public Manager(double baseSalary, double bonus) {
        this.baseSalary = baseSalary;
        this.bonus = bonus;
    }

    // calculateSalary メソッドの実装
    @Override
    public double calculateSalary() {
        return baseSalary + bonus;
    }
}

// 具象クラス Developer
class Developer extends Employee {
    private double hourlyRate;
    private int hoursWorked;

    // コンストラクタ
    public Developer(double hourlyRate, int hoursWorked) {
        this.hourlyRate = hourlyRate;
        this.hoursWorked = hoursWorked;
    }

    // calculateSalary メソッドの実装
    @Override
    public double calculateSalary() {
        return hourlyRate * hoursWorked;
    }
}

// メインクラス
public class Main {
    public static void main(String[] args) {
        // Manager クラスの利用例
        Manager manager = new Manager(50000, 10000);
        System.out.println("Manager's Salary: $" + manager.calculateSalary());

        // Developer クラスの利用例
        Developer developer = new Developer(25, 160);
        System.out.println("Developer's Salary: $" + developer.calculateSalary());
    }
}

この例では、Employee クラスが抽象メソッド calculateSalary() を宣言しています。それを継承する具象クラス Manager と Developer が、それぞれの職種に応じた給与計算を行うメソッドを実装しています。Main クラスで Manager クラスと Developer クラスをインスタンス化し、calculateSalary() メソッドを呼び出して、各従業員の給与が表示される様子が示されています。

出力結果:

Manager's Salary: $60000.0
Developer's Salary: $4000.0

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

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/3652/feed 0
016 抽象クラス(抽象メソッドと具象メソッド) 009 問題 https://minner.asia/archives/3649 https://minner.asia/archives/3649#respond Mon, 11 Dec 2023 22:25:06 +0000 http://localhost/?p=3649

問題

calculateSalary() という抽象メソッドを宣言します。
具象クラス Manager と Developer を作成し、それぞれ calculateSalary() メソッドを実装します。

ヒント

  1. 抽象クラス Employee の定義:
    • Employee クラスを作成し、calculateSalary() という抽象メソッドを宣言します。
  2. 具象クラス Manager の作成:
    • Manager クラスを作成し、Employee クラスを継承します。
    • calculateSalary() メソッドをオーバーライドして、マネージャーの給与計算を行う実装を提供します。
  3. 具象クラス Developer の作成:
    • Developer クラスを作成し、Employee クラスを継承します。
    • calculateSalary() メソッドをオーバーライドして、開発者の給与計算を行う実装を提供します。
  4. テスト:
    • メインプログラムやテストクラスを作成して、Manager クラスと Developer クラスの calculateSalary() メソッドが期待通りに機能するか確認します。

これによって、抽象クラスと具象クラスの関係や、抽象メソッドの実装に慣れることができます。

→解答例

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

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/3649/feed 0