/** * ドメイン非依存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 ポリモーフィズム(アップキャスト) 005 解答例 | Javaドリル

015 ポリモーフィズム(アップキャスト) 005 解答例

015-005 015 ポリモーフィズム
class Animal {
    void makeSound() {
        System.out.println("Some generic sound");
    }
}

class Dog extends Animal {
    void makeSound() {
        System.out.println("Woof!");
    }
}

public class Main {
    public static void main(String[] args) {
        // Animal クラスのオブジェクトを作成
        Animal animal = new Animal();
        // Animal クラスの makeSound メソッドを呼び出す
        animal.makeSound();

        // Dog クラスのオブジェクトを作成
        Dog dog = new Dog();
        // Dog クラスの makeSound メソッドを呼び出す(オーバーライドされたバージョンが呼ばれる)
        dog.makeSound();

        // アップキャストを使用して Animal クラスの参照変数で Dog クラスのオブジェクトを操作
        Animal upcastedDog = new Dog();
        // Animal クラスの参照変数で Dog クラスの makeSound メソッドを呼び出す(オーバーライドされたバージョンが呼ばれる)
        upcastedDog.makeSound();
    }
}

この例では、Animal クラスと Dog クラスを作成し、メインクラスでそれぞれのクラスのオブジェクトを作成しています。そして、アップキャストを使用して Animal クラスの参照変数で Dog クラスのオブジェクトを操作しています。

ポリモーフィズムにおけるアップキャスト

ポリモーフィズムにおけるアップキャストは、異なるクラス型のオブジェクトを、それらの共通の親クラス型に変換するプロセスです。アップキャストにより、子クラス型のオブジェクトを親クラス型の参照変数で扱うことができます。これは、オブジェクト指向プログラミングの中で特に重要な概念であり、ポリモーフィズムの実現に寄与します。

以下に、アップキャストの主なポイントとその解説を示します。

  1. 基本概念:
    • アップキャストは、子クラス型のオブジェクトを親クラス型に変換する操作を指します。
    • 例えば、Dog クラスが Animal クラスを継承している場合、Dog クラスのオブジェクトは Animal クラスの参照変数で扱うことができます。
  2. 例題:
    • Animal クラスと Dog クラスがある場合、Dog クラスのオブジェクトを Animal クラスの参照変数で操作することができます。
    • これにより、共通のメソッドやプロパティにアクセスできますが、子クラス固有のメソッドやプロパティにはアクセスできません。
  3. ポリモーフィズムの一環:
    • アップキャストはポリモーフィズムの一部であり、異なる型のオブジェクトを同じ型の参照変数で統一的に扱うことができます。
    • これにより、コードの柔軟性が向上し、拡張性が増します。
  4. 実行時の動的な挙動:
    • アップキャストにより、コンパイル時には親クラス型のメソッドしか呼び出せませんが、実行時にはオブジェクトの実際の型に基づいて適切なメソッドが呼び出されます。
// アップキャストの例
Animal animal = new Dog();  // Dog クラスのオブジェクトを Animal クラスの参照変数で扱う
animal.makeSound();  // 実行時に Dog クラスのオーバーライドされた makeSound メソッドが呼ばれる

アップキャストは、ポリモーフィズムの基本的なメカニズムであり、コードの再利用性と拡張性を高める重要な手段です。

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

🎯 実習で理解を深めよう

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

コメント

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