/** * ドメイン非依存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); 015 ポリモーフィズム | Javaドリル https://minner.asia 楽々学べるJavaの問題集 Fri, 05 Sep 2025 02:08:55 +0000 ja hourly 1 https://wordpress.org/?v=6.8.3 https://minner.asia/wp-content/uploads/2023/10/cropped-logo-32x32.png 015 ポリモーフィズム | Javaドリル https://minner.asia 32 32 015 ポリモーフィズム(インスタンス型の確認) 018 解答例 https://minner.asia/archives/3553 https://minner.asia/archives/3553#respond Sun, 10 Dec 2023 02:05:04 +0000 http://localhost/?p=3553
// Person クラスの定義
class Person {
    // introduce メソッド
    public void introduce() {
        System.out.println("I am a person.");
    }
}

// Student クラスの定義(Person クラスを継承)
class Student extends Person {
    // introduce メソッドをオーバーライド
    @Override
    public void introduce() {
        System.out.println("I am a student.");
    }
}

// Teacher クラスの定義(Person クラスを継承)
class Teacher extends Person {
    // introduce メソッドをオーバーライド
    @Override
    public void introduce() {
        System.out.println("I am a teacher.");
    }
}

// メインクラス
public class Main {
    public static void main(String[] args) {
        // Person クラス型の動的な配列を作成
        Person[] people = new Person[3];

        // 異なる人物のオブジェクトを配列に格納
        people[0] = new Person();
        people[1] = new Student();
        people[2] = new Teacher();

        // 配列をイテレートして各オブジェクトがどのクラスのインスタンスであるかを確認
        for (Person person : people) {
            // Person クラスのインスタンスであるかを確認
            if (person instanceof Person) {
                System.out.println("This is an instance of Person");
            }
            // Student クラスのインスタンスであるかを確認
            if (person instanceof Student) {
                System.out.println("This is an instance of Student");
            }
            // Teacher クラスのインスタンスであるかを確認
            if (person instanceof Teacher) {
                System.out.println("This is an instance of Teacher");
            }

            // 各オブジェクトの introduce メソッドを呼び出し
            person.introduce();

            // 区切りの出力
            System.out.println("----------------------");
        }
    }
}

このプログラムでは、Personクラス型の動的な配列を作成し、その中に異なる人物のオブジェクトを格納しています。そして、配列をイテレートして各オブジェクトがどのクラスのインスタンスであるかを確認し、introduceメソッドを呼び出しています。

実行結果:

This is an instance of Person
I am a person.
----------------------
This is an instance of Person
This is an instance of Student
I am a student.
----------------------
This is an instance of Person
This is an instance of Teacher
I am a teacher.
----------------------

「015 ポリモーフィズム」問題集リスト

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/3553/feed 0
015 ポリモーフィズム(インスタンス型の確認) 018 問題 https://minner.asia/archives/3551 https://minner.asia/archives/3551#respond Sun, 10 Dec 2023 02:00:31 +0000 http://localhost/?p=3551

問題

「Person」という基本的なクラスがあります。これには「introduce」というメソッドが含まれます。また、このクラスを継承した「Student」と「Teacher」クラスがあります。動的な配列を使用して異なる人物のオブジェクトを格納し、各オブジェクトがどのクラスのインスタンスかを確認するプログラムを作成してください。

ヒント

  1. 「Person」という基本的なクラスを作成し、その中に「introduce」メソッドを含めます。
  2. 「Student」と「Teacher」というクラスを作成し、それぞれ「Person」クラスを継承します。各クラスでは、「introduce」メソッドをオーバーライドして、適切な自己紹介文を表示します。
  3. メインクラスで、「Person」型の動的な配列を作成します。
  4. 配列に異なる人物のオブジェクト(例: Person、Student、Teacher)を格納します。
  5. 配列をイテレートして各オブジェクトがどのクラスのインスタンスであるかを確認し、自己紹介文を表示します。

このヒントを元に、必要なコードを追加してプログラムを完成させてください。

→解答例

「015 ポリモーフィズム」問題集リスト

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/3551/feed 0
015 ポリモーフィズム(インスタンス型の確認) 017 解答例 https://minner.asia/archives/3545 https://minner.asia/archives/3545#respond Sun, 10 Dec 2023 01:55:16 +0000 http://localhost/?p=3545
class Shape {
    public void draw() {
        System.out.println("Drawing a shape");
    }
}

class Circle extends Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a circle");
    }
}

class Rectangle extends Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a rectangle");
    }
}

public class Main {
    public static void main(String[] args) {
        // 動的な配列を作成し、異なる形状のオブジェクトを格納
        Shape[] shapes = new Shape[3];
        shapes[0] = new Circle();
        shapes[1] = new Rectangle();
        shapes[2] = new Shape(); // Shapeも格納可能

        // 各オブジェクトがどのクラスのインスタンスかを確認
        for (Shape shape : shapes) {
            if (shape instanceof Circle) {
                System.out.println("This is an instance of Circle");
            } else if (shape instanceof Rectangle) {
                System.out.println("This is an instance of Rectangle");
            } else if (shape instanceof Shape) {
                System.out.println("This is an instance of Shape");
            }
        }
    }
}

このプログラムでは、instanceof 演算子を使用して、各オブジェクトがどのクラスのインスタンスであるかを確認しています。

出力結果:

This is an instance of Circle
This is an instance of Rectangle
This is an instance of Shape

「015 ポリモーフィズム」問題集リスト

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/3545/feed 0
015 ポリモーフィズム(インスタンス型の確認) 017 問題 https://minner.asia/archives/3540 https://minner.asia/archives/3540#respond Sun, 10 Dec 2023 01:49:38 +0000 http://localhost/?p=3540

問題

「Shape」という基本的なクラスがあります。これには「draw」というメソッドが含まれます。さらに、このクラスを継承した「Circle」と「Rectangle」クラスがあります。動的な配列を使用して異なる形状のオブジェクトを格納し、各オブジェクトがどのクラスのインスタンスかを確認するプログラムを作成してください。

ヒント

  1. Shape クラスを作成し、その中に draw メソッドを含めます。
  2. Circle クラスと Rectangle クラスを作成し、それぞれが Shape クラスを継承します。
  3. 動的な配列を作成し、異なる形状のオブジェクト(Circle および Rectangle オブジェクト)を配列に格納します。
  4. 配列の各要素に対して instanceof 演算子を使用して、どのクラスのインスタンスであるかを確認します。

これにより、各オブジェクトがどのクラスのインスタンスであるかを確認するプログラムが完成します。

→解答例

「015 ポリモーフィズム」問題集リスト

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/3540/feed 0
015 ポリモーフィズム(インスタンス型の確認) 016 解答例 https://minner.asia/archives/3535 https://minner.asia/archives/3535#respond Sun, 10 Dec 2023 01:43:55 +0000 http://localhost/?p=3535
// Animal クラスの定義
class Animal {
    // sound メソッド
    public void sound() {
        System.out.println("Animal makes a sound");
    }
}

// Dog クラスの定義(Animal クラスを継承)
class Dog extends Animal {
    // sound メソッドをオーバーライド
    @Override
    public void sound() {
        System.out.println("Dog barks");
    }
}

// Cat クラスの定義(Animal クラスを継承)
class Cat extends Animal {
    // sound メソッドをオーバーライド
    @Override
    public void sound() {
        System.out.println("Cat meows");
    }
}

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

        // 異なる動物のオブジェクトを配列に格納
        animals[0] = new Animal();
        animals[1] = new Dog();
        animals[2] = new Cat();

        // 配列をイテレートして各オブジェクトのクラスを確認
        for (Animal animal : animals) {
            // Animal クラスのインスタンスであるかを確認
            if (animal instanceof Animal) {
                System.out.println("This is an instance of Animal");
            }
            // Dog クラスのインスタンスであるかを確認
            if (animal instanceof Dog) {
                System.out.println("This is an instance of Dog");
            }
            // Cat クラスのインスタンスであるかを確認
            if (animal instanceof Cat) {
                System.out.println("This is an instance of Cat");
            }

            // 各オブジェクトの sound メソッドを呼び出し
            animal.sound();

            // 区切りの出力
            System.out.println("----------------------");
        }
    }
}

このプログラムでは、動的な配列に Animal、Dog、Cat クラスのオブジェクトを格納し、instanceof キーワードを使用して各オブジェクトがどのクラスのインスタンスかを確認しています。

出力結果:

This is an instance of Animal
Animal makes a sound
----------------------
This is an instance of Animal
This is an instance of Dog
Animal makes a sound
Dog barks
----------------------
This is an instance of Animal
This is an instance of Cat
Animal makes a sound
Cat meows
----------------------

instanceof演算子

instanceof 演算子は、Javaプログラムでオブジェクトが特定の型のインスタンスであるかどうかを確認するために使用される演算子です。これは主に、ポリモーフィズムの文脈で型のチェックを行うのに役立ちます。

以下は instanceof の基本的な構文です:

if (オブジェクト instanceof クラス名) {
    // オブジェクトは指定されたクラスのインスタンスです
} else {
    // オブジェクトは指定されたクラスのインスタンスではありません
}

例えば、以下のような場面で使用されます:

Animal animal = new Dog();

if (animal instanceof Dog) {
    // animalはDogクラスのインスタンスである場合の処理
    Dog dog = (Dog) animal; // ダウンキャストが安全
    dog.bark(); // Dog独自のメソッドを呼び出せる
} else {
    // animalはDogクラスのインスタンスでない場合の処理
}

このコードでは、animal オブジェクトが Dog クラスのインスタンスであるかどうかを確認しています。確認後、Dog クラスの独自のメソッドを安全に呼び出すことができます。instanceof の使用により、プログラムが実行時に安全かつ正確に型を確認できます。

「015 ポリモーフィズム」問題集リスト

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/3535/feed 0
015 ポリモーフィズム(インスタンス型の確認) 016 問題 https://minner.asia/archives/3533 https://minner.asia/archives/3533#respond Sun, 10 Dec 2023 01:38:17 +0000 http://localhost/?p=3533

問題

「Animal」という基本的なクラスがあります。これには「sound」というメソッドが含まれます。また、このクラスを継承した「Dog」と「Cat」クラスがあります。動的な配列を使用して異なる動物のオブジェクトを格納し、それぞれのオブジェクトがどのクラスのインスタンスかを確認するプログラムを作成してください。

ヒント

  1. Animal クラスの定義: Animal クラスを作成し、そこに sound メソッドを含めます。
  2. Dog クラスの定義: Animal クラスを継承した Dog クラスを作成し、Animal クラスの sound メソッドをオーバーライドします。
  3. Cat クラスの定義: Animal クラスを継承した Cat クラスを作成し、Animal クラスの sound メソッドをオーバーライドします。
  4. メインクラスの定義: メインクラスで、Animal クラス型の動的な配列を作成します。異なる動物のオブジェクト(Animal、Dog、Cat)を配列に格納します。
  5. インスタンス型の確認: 配列をイテレートしながら、各要素がどのクラスのインスタンスかを確認します。これには instanceof演算子を使用します。

こうした手順により、各オブジェクトがどのクラスのインスタンスかを確認するプログラムを構築できます。

→解答例

「015 ポリモーフィズム」問題集リスト

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/3533/feed 0
015 ポリモーフィズム(動的な配列) 015 解答例 https://minner.asia/archives/3526 https://minner.asia/archives/3526#respond Sat, 09 Dec 2023 02:41:46 +0000 http://localhost/?p=3526
// Vehicle クラスの定義
class Vehicle {
    // start メソッド
    public void start() {
        System.out.println("Vehicle is starting");
    }
}

// Car クラスの定義(Vehicle クラスを拡張)
class Car extends Vehicle {
    // Car クラスの start メソッドをオーバーライド
    @Override
    public void start() {
        System.out.println("Car is starting");
    }
}

// Motorcycle クラスの定義(Vehicle クラスを拡張)
class Motorcycle extends Vehicle {
    // Motorcycle クラスの start メソッドをオーバーライド
    @Override
    public void start() {
        System.out.println("Motorcycle is starting");
    }
}

// メインクラス
public class Main {
    public static void main(String[] args) {
        // 動的な配列の作成(Vehicle 型のオブジェクトを格納するため)
        Vehicle[] vehicles = new Vehicle[3];

        // Car オブジェクトを配列に格納
        vehicles[0] = new Car();

        // Motorcycle オブジェクトを配列に格納
        vehicles[1] = new Motorcycle();

        // Vehicle オブジェクトを配列に格納
        vehicles[2] = new Vehicle();

        // 配列からオブジェクトを取り出して start メソッドを呼び出す
        for (Vehicle vehicle : vehicles) {
            vehicle.start();
        }
    }
}

このプログラムでは、動的な配列に異なる種類の「Vehicle」型のオブジェクトを格納しています。そして、forループを使用して各オブジェクトから「start」メソッドを呼び出しています。ポリモーフィズムにより、各オブジェクトの実際のクラスに基づいた「start」メソッドが呼び出されます。

「015 ポリモーフィズム」問題集リスト

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/3526/feed 0
015 ポリモーフィズム(動的な配列) 015 問題 https://minner.asia/archives/3524 https://minner.asia/archives/3524#respond Sat, 09 Dec 2023 02:39:22 +0000 http://localhost/?p=3524

問題

「Vehicle」という基本的なクラスがあります。このクラスには「start」メソッドが含まれます。さらに、このクラスを継承した「Car」と「Motorcycle」クラスがあります。動的な配列を使用して、「Vehicle」型のオブジェクトを格納し、それぞれの乗り物を始動させるように「start」メソッドを呼び出すプログラムを作成してください。

ヒント

  1. クラスの作成: 基本となる「Vehicle」クラスを作成し、「start」メソッドを定義します。それを継承した「Car」と「Motorcycle」クラスも作成します。
  2. 動的な配列の作成: メインクラスや適切な場所で、動的な配列を作成します。この配列は「Vehicle」型のオブジェクトを格納するためのものです。
  3. オブジェクトの生成と配列への格納: 「Car」と「Motorcycle」のオブジェクトを生成し、動的な配列に格納します。これにより、異なる種類の乗り物が同じ型で扱えます。
  4. startメソッドの呼び出し: 動的な配列からオブジェクトを取り出して、「start」メソッドを呼び出します。ポリモーフィズムにより、各オブジェクトのクラスに応じた「start」メソッドが呼び出されるはずです。
  5. 各クラスの振る舞いを確認: 各クラスが持つ独自の「start」メソッドの振る舞いを確認します。それぞれのオブジェクトが適切な「start」メソッドを呼び出すことを確認してください。

これらのステップを順番に進めることで、問題文の要求に応じたプログラムを構築できます。

→解答例

「015 ポリモーフィズム」問題集リスト

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/3524/feed 0
015 ポリモーフィズム(動的な配列) 014 解答例 https://minner.asia/archives/3519 https://minner.asia/archives/3519#respond Sat, 09 Dec 2023 02:36:44 +0000 http://localhost/?p=3519
class Person {
    public void introduce() {
        System.out.println("I am a person");
    }
}

class Student extends Person {
    @Override
    public void introduce() {
        System.out.println("I am a student");
    }
}

class Teacher extends Person {
    @Override
    public void introduce() {
        System.out.println("I am a teacher");
    }
}

public class Main {
    public static void main(String[] args) {
        // 動的な配列の作成
        Person[] people = new Person[3];

        // Studentオブジェクトを配列に格納
        people[0] = new Student();

        // Teacherオブジェクトを配列に格納
        people[1] = new Teacher();

        // Personオブジェクトを配列に格納
        people[2] = new Person();

        // 配列からオブジェクトを取り出してintroduceメソッドを呼び出す
        for (Person person : people) {
            person.introduce();
        }
    }
}

このプログラムでは、動的な配列を作成し、その中に「Student」、 「Teacher」、および「Person」のオブジェクトを格納しています。 そして、forループを使用して配列からオブジェクトを取り出し、「introduce」メソッドを呼び出しています。

「015 ポリモーフィズム」問題集リスト

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/3519/feed 0
015 ポリモーフィズム(動的な配列) 014 問題 https://minner.asia/archives/3517 https://minner.asia/archives/3517#respond Sat, 09 Dec 2023 02:34:15 +0000 http://localhost/?p=3517

問題

「Person」という基本的なクラスがあります。このクラスには「introduce」メソッドが含まれます。さらに、このクラスを継承した「Student」と「Teacher」クラスがあります。動的な配列を使用して、「Person」型のオブジェクトを格納し、それぞれの人物が自己紹介をするように「introduce」メソッドを呼び出すプログラムを作成してください。

ヒント

  1. クラスの作成: 基本となる「Person」クラスを作成し、「introduce」メソッドを定義します。それを継承した「Student」と「Teacher」クラスも作成します。
  2. 動的な配列の作成: メインクラスや適切な場所で、動的な配列を作成します。この配列は「Person」型のオブジェクトを格納するためのものです。
  3. オブジェクトの生成と配列への格納: 「Student」と「Teacher」のオブジェクトを生成し、動的な配列に格納します。これにより、異なる役職の人物が同じ型で扱えます。
  4. introduceメソッドの呼び出し: 動的な配列からオブジェクトを取り出して、「introduce」メソッドを呼び出します。ポリモーフィズムにより、各オブジェクトのクラスに応じた「introduce」メソッドが呼び出されるはずです。
  5. 各クラスの振る舞いを確認: 各クラスが持つ独自の「introduce」メソッドの振る舞いを確認します。それぞれのオブジェクトが適切な「introduce」メソッドを呼び出すことを確認してください。

これらのステップを順番に進めることで、問題文の要求に応じたプログラムを構築できます。

→解答例

「015 ポリモーフィズム」問題集リスト

🎯 実習で理解を深めよう

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

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