MustInherit Class figura Protected base As Integer Protected altezza As Integer Sub New(ByVal b As Integer, ByVal a As Integer) base = b altezza = a End Sub MustOverride Function Area() End ClassEcco: le proprietà sono Protected per essere visibili dalle classi derivate.
La funzione è MustOverride, ovviamente...
E ho creato un costruttore, perchè il costruttore della classe derivata possa fare riferimento a questo.
Ecco le classi derivate:
Class Triangolo Inherits figura Sub New(ByVal b As Integer, ByVal a As Integer) MyBase.New(b, a) End Sub Public Overrides Function Area() As Object Return base * altezza / 2 End Function End Class Class Rettangolo Inherits figura Sub New(ByVal b As Integer, ByVal a As Integer) MyBase.New(b, a) End Sub Public Overrides Function Area() As Object Return base * altezza End Function End Class
Le istanzio così:
Sub Main() Dim mioTriangolo As New Triangolo(5, 4) Console.WriteLine(mioTriangolo.Area) Console.ReadKey() Dim mioRettangolo As New Rettangolo(5, 4) Console.WriteLine(mioRettangolo.Area) Console.ReadKey() End SubE sembra funzionare:
10 20
Ma ho subito un'altra idea... E se volessi creare una classe derivata Trapezio? La questione è interessante, perchè in questo caso dovrei aggiungere una proprietà in più nella sola classe derivata, ossia la base minore...
Lo vedrò successivamente...
Nessun commento:
Posta un commento