ポリモーフィズム(インターフェース)
インターフェースでポリモーフィズムを実現します。
インターフェースはクラスの規程のみを定めたものとなる為、抽象クラスと同様にポリモーフィズムを比較的容易に実現することが可能です。
継承の時と同じように、何かメッセージを表示する共通メソッドをインターフェースに定義しておき、それぞれのクラスに派生させる場合を考えてみます。
interface IClass { void ShowMessage(); } public class Class1 : IClass{ public void ShowMessage() { Console.WriteLine("クラス1"); } } public class Class2 : IClass { public void ShowMessage() { Console.WriteLine("クラス2"); } } public class Class3 : IClass { public void ShowMessage() { Console.WriteLine("クラス3"); } }
Interface IClass Sub ShowMessage() End Interface Public Class Class1 : Implements IClass Public Sub ShowMessage1() Implements IClass.ShowMessage Console.WriteLine("クラス1") End Sub End Class Public Class Class2 : Implements IClass Public Sub ShowMessage2() Implements IClass.ShowMessage Console.WriteLine("クラス2") End Sub End Class Public Class Class3 : Implements IClass Public Sub ShowMessage3() Implements IClass.ShowMessage Console.WriteLine("クラス3") End Sub End Class
これらもポリモーフィズムの実現により同じメソッド名で違った処理を呼ぶことが可能となります。
List<IClass> icls = new List<IClass>() { new Class1(), new Class2(), new Class3() }; foreach (IClass c in icls) { c.ShowMessage(); }
Dim icls As New List(Of IClass) From {New Class1(), New Class2(), New Class3()} For Each c As IClass In icls c.ShowMessage() Next