Il polimorfismo è una delle caratteristiche fondamentali di VB.Net, rappresenta la capacità di assumere forma diversa.
Supponiamo di avere due classi "Quadrato" e "Triangolo" che ereditano entrambe dalla classe padre "Figura".
Suppponiamo inoltre che in Figura ci sia un metodo per calcolare l'area, e questo metodo debba essere utilizzato anche dalle istanze di quadrato e triangolo.
Possiamo utilizzare l'overriding per richiamare il metodo corretto in base al tipo di classe di cui abbiamo istanziato un oggetto.
In parole povere se stiamo lavorato con un triangolo, utilizzaremo il metodo della classe triangolo, se invece stiamo lavorando con un quadrato utilizzaremo il metodo della classe quadrato.
Module esempioClassi
MustInherit Class Forma
Private lunghezza As Double
Private altezza As Double
Public Sub New(ByVal lung As Double, ByVal alte As Double)
Console.WriteLine("Creo l'oggetto")
lunghezza = lung
altezza = alte
End Sub
Public Sub impostaLunghezza(ByVal lung As Double)
lunghezza = lung
End Sub
Public Sub impostaAltezza(ByVal alte As Double)
altezza = alte
End Sub
Public MustOverride Function calcolaArea() As Double
End Class
Class Rettangolo Inherits Forma
Public Function calcolaArea() As Double
Return lunghezza * altezza
End Function
End Class
Class Triangolo Inherits Forma
Public Function calcolaArea() As Double
Return lunghezza * altezza / 2
End Function
End Class
Sub Main()
Dim rect As Rettangolo = New Rettangolo(2.0, 3.0)
Console.WriteLine("Area del rettangolo : {0}", rect.calcolaArea() )
Dim tri As Triangolo = New Triangolo(2.0, 3.0)
Console.WriteLine("Area del triangolo : {0}", tri.calcolaArea() )
End Sub
End Module