Condividi tramite


Polimorfismo basato sulle interfacce

Aggiornamento: novembre 2007

Le interfacce costituiscono un'ulteriore soluzione per ottenere il polimorfismo in Visual Basic. Analogamente alle classi, nelle interfacce vengono descritti proprietà e metodi, ma, a differenza delle classi, le interfacce non sono in grado di fornire alcuna implementazione. Più interfacce hanno il vantaggio di consentire un'evoluzione dei sistemi di componenti software senza creare interruzioni nel codice esistente.

Per ottenere il polimorfismo con le interfacce, è necessario implementare un'interfaccia in modi diversi in numerose classi. Le applicazioni client possono utilizzare le implementazioni precedenti o quelle nuove esattamente allo stesso modo. Il vantaggio del polimorfismo basato sulle interfacce consiste nel fatto che non è necessario ricompilare applicazioni client esistenti affinché queste funzionino con le nuove implementazioni dell'interfaccia.

Nell'esempio seguente viene definita un'interfaccia denominata Shape2, che viene implementata in una classe denominata RightTriangleClass2 e RectangleClass2. Mediante una routine denominata ProcessShape2, viene chiamato il metodo CalculateArea di istanze della classe RightTriangleClass2 o RectangleClass2:

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

Vedere anche

Attività

Procedura: creare e implementare interfacce

Concetti

Polimorfismo basato sull'ereditarietà