【しばらく編集不可モードで運営します】 編集(管理者用) | 差分 | 新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴

ポリモルフィズム - 共通のインタフェースの背後で選択され、実行される手続きを隠してしまうことをポリモルフィズムという。

目次

共通のインタフェースの背後で選択され、実行される手続きを隠してしまうことをポリモルフィズムという。 「多態」と訳すことがある。

ポリモルフィズム

    interface I {
        public abstract void m();
    }

    class C1 implements I {
        public void m() {
            System.out.println("C1");
        }
    }

    class C2 implements I {
        public void m() {
            System.out.println("C2");
        }
    }

    class C3 implements I {
        public void m() {
            System.out.println("C3");
        }
    }

    public class Polymorphism {
        public static void main(String[] args) {
            I[] a = new I[3];
            a[0] = new C1();
            a[1] = new C2();
            a[2] = new C3();
            for (int i = 0; i < a.length; i++) {
                a[i].m();
            }
        }
    }

配列aの要素の型はIインタフェースだが、 実際に代入されているのはIインタフェースを実装しているC1, C2, C3の各クラスのインスタンスである。 配列の要素に代入されている各インスタンスは、 それぞれのクラスの顔を持つと同時に、Iインタフェースの顔も持つ。 これがポリモルフィズム。

メモ

ポリモルフィズムを使ってオブジェクトの型ごとに処理を分岐しなくてもよくなることがある。

また、オブジェクト指向言語で型によるswitch文が出てきたらクラス設計が間違っているかもしれないと うたがってみるとよい。ってね