次の方法で共有


インターフェイス ベースのポリモーフィズム

更新 : 2007 年 11 月

Visual Basic では、インターフェイスを使用してポリモーフィズムを実現することもできます。インターフェイスには、クラスのようにプロパティやメソッドが記述されています。しかし、クラスとは異なり、実装を提供することはできません。複数のインターフェイスを使用すると、既存のコードを壊すことなく、ソフトウェア コンポーネントのシステムを発展させていくことができます。

インターフェイスを使用してポリモーフィズムを実現するには、複数のクラスにそれぞれ違った方法でインターフェイスを実装します。クライアント アプリケーションは、古い実装と新しい実装のどちらでも、まったく同じ方法で使用できます。インターフェイス ベースのポリモーフィズムの利点は、既存のクライアント アプリケーションを新しいインターフェイスの実装で動作させるために、再コンパイルする必要がないことです。

次の例では、Shape2 というインターフェイスを定義しています。Shape2 は、RightTriangleClass2 と RectangleClass2 というクラスに実装されています。ProcessShape2 という名前のプロシージャによって、RightTriangleClass2 または RectangleClass2 のインスタンスの CalculateArea メソッドが呼び出されます。

Sub TestInterface()
    Dim RectangleObject2 As New RectangleClass2
    Dim RightTriangleObject2 As New RightTriangleClass2
    ProcessShape2(RightTriangleObject2, 3, 14)
    ProcessShape2(RectangleObject2, 3, 5)
End Sub

Sub ProcessShape2(ByVal Shape2 As Shape2, ByVal X As Double, _
      ByVal Y As Double)
    MsgBox("The area of the object is " _
       & Shape2.CalculateArea(X, Y))
End Sub

Public Interface Shape2
    Function CalculateArea(ByVal X As Double, ByVal Y As Double) As Double
End Interface

Public Class RightTriangleClass2
    Implements Shape2
    Function CalculateArea(ByVal X As Double, _
          ByVal Y As Double) As Double Implements Shape2.CalculateArea
        ' Calculate the area of a right triangle. 
        Return 0.5 * (X * Y)
    End Function
End Class

Public Class RectangleClass2
    Implements Shape2
    Function CalculateArea(ByVal X As Double, _
          ByVal Y As Double) As Double Implements Shape2.CalculateArea
        ' Calculate the area of a rectangle. 
        Return X * Y
    End Function
End Class

参照

処理手順

方法 : インターフェイスを作成および実装する

概念

継承ベースのポリモーフィズム