ポリモフィズム polymorphism 多相性 多態性
派生関係にあるクラス型のインスタンスを参照できることを言います。
例えば、以下のようなソースコードがあって、
1 public class Hoge { 2 Hoge() { } 3 public void print() { 4 System.out.println("Hoge World"); 5 } 6 }
1 public class SubHoge extends Hoge { 2 SubHoge() { 3 super(); 4 } 5 public void print() { 6 System.out.println("SubHoge World"); 7 } 8 9 public void printPrint() { 10 System.out.println("print"); 11 } 12 }
1 public class Main { 2 public static void main(String[] args) { 3 Hoge h; 4 h = new Hoge(); 5 h.print(); 6 //h.printPrint(); //エラー 7 System.out.println(); 8 9 SubHoge sh; 10 sh = new SubHoge(); 11 sh.print(); 12 sh.printPrint(); 13 System.out.println(); 14 15 h = sh; 16 h.print(); 17 //h.printPrint(); //エラー 18 } 19 }
以下のような実行結果になります。
$ java Main Hoge World SubHoge World print SubHoge World
クラスMainの以下の部分
15 h = sh; 16 h.print();
ここでは、クラスHoge型のインスタンス参照変数hがクラスSubHoge型のインスタンスを参照するように代入して、そのメンバであるメソッドprintを呼び出しています。
このようなことができます。