mutao.net

いわゆる雑記。

ポリモーフィズムを使った問題の落とし穴

  • 参照型のクラスにないメソッドは使うことができず、コンパイルエラーとなる。
public class A {
    public void hello() {
        System.out.println("Hello!");
    }
}

public class B extends A {
    public void test() {
        System.out.println("Test!");
    }
}

public class  Main {
    public static void main(String[] args) {
        A a = new B();
        // コンパイルエラー
        a.test();
    }
}
  • 上記のコードでは、参照型がAでインスタンス型がBである。Bクラスにはtestメソッドが追加されているが、インスタンスをA型として扱っているためtestメソッドが呼び出せずコンパイルエラーが発生する。

注意事項