ポリモーフィズム

ポリモーフィズムとは、異なる型を同一視することによって、複数のクラスを同じ操作で制御できる言語特性のことです。「オブジェクト指向」において、もっとも重要な機能の一つと言えるでしょう。

多くのデザインパターンは、このポリモーフィズムの機能を利用しています。

ポリモーフィズムを使わない例

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でプログラムを書きます");
		}
	}
}