ポリモーフィズムとは、異なる型を同一視することによって、複数のクラスを同じ操作で制御できる言語特性のことです。「オブジェクト指向」において、もっとも重要な機能の一つと言えるでしょう。
多くのデザインパターンは、このポリモーフィズムの機能を利用しています。
ポリモーフィズムを使わない例
using System; using System.Collections.Generic; namespace PolySample { class Program { static void Main(string[] args){ List<object> list = new List<object>(); list.Add(new CSharper()); list.Add(new Rubyist()); foreach(object p in list){ if (p is CSharper){ (p as CSharper).Work(); } else if (p is Rubyist){ (p as Rubyist).Work(); } } Console.ReadLine(); } } public class CSharper { public void Work() { Console.WriteLine ("C#でプログラムを書きます"); } } public class Rubyist { public void Work () { Console.WriteLine ("Rubyでプログラムを書きます"); } } }
ポリモーフィズムを利用した例
using System; using System.Collections.Generic; namespace PolySample { class Program { static void Main(string[] args){ List<Programmer> list = new List<Programmer> (); list.Add(new CSharper()); list.Add(new Rubyist()); foreach(Programmer p in list){ p.Work (); } Console.ReadLine(); } } public abstract class Programmer { public abstract void Work (); } public class CSharper : Programmer { public override void Work() { Console.WriteLine ("C#でプログラムを書きます"); } } public class Rubyist : Programmer { public override void Work () { Console.WriteLine ("Rubyでプログラムを書きます"); } } }