ポリモーフィズムとは、異なる型を同一視することによって、複数のクラスを同じ操作で制御できる言語特性のことです。「オブジェクト指向」において、もっとも重要な機能の一つと言えるでしょう。
多くのデザインパターンは、このポリモーフィズムの機能を利用しています。
ポリモーフィズムを使わない例
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でプログラムを書きます");
}
}
}