The term abstraction is used to hide certain details and showing only essential information to the user. The
MustInherit modifier indicates that the class or member has a missing or incomplete implementation.
MustInheritmodifier can be used with classes, methods, properties, indexers, and events.
MustInheritmodifier is used in a class declaration, it is intended only to be a base class of other classes, and it cannot be instantiated on its own.
MustOverridemust be implemented by non-abstract classes that derive from the abstract class.
MustOverridemodifier in a method or property declaration to indicate that the method or property does not contain implementation.
Let's have a look at the following simple example.
Public MustInherit Class Shape Public MustOverride Function CalculateArea() As Double End Class
We have declared the
Shape class as an abstract. It contains a single method
CalculateArea(), which is also abstract. So it means that we now need to inherit the
Shape class and provide the implementation for the
Public Class Circle Inherits Shape Public Property Radius As Double Public Sub New(ByVal rad As Double) Radius = rad End Sub Public Overrides Function CalculateArea() As Double Return (3.14) * Math.Pow(Radius, 2) End Function End Class Public Class Rectangle Inherits Shape Public Property Height As Double Public Property Width As Double Public Sub New(ByVal h As Double, ByVal w As Double) Height = h Width = w End Sub Public Overrides Function CalculateArea() As Double Return Height * Width End Function End Class
As you can see, we have provided an implementation for the
CalculateArea() abstract method in both child classes
Rectangle with their implementation by calculating the area of circle and rectangle respectively.
Now we can create
Rectangle objects and assign them to
Shape instances, but we cannot create an object of the
Shape class because it is an abstract class.
Dim circle As Shape = New Circle(2.5) Dim rectangle As Shape = New Rectangle(4.75, 6.25) Console.WriteLine("The area of the circle is " & circle.CalculateArea()) Console.WriteLine("The area of the rectangle is " & rectangle.CalculateArea())
You can see that both objects can call the
CalculateArea(), but the right version of the
CalculateArea() method is not being determined at compile time but determined at runtime.
Let's run the above code, and you will see the following output.
The area of the circle is 19.625 The area of the rectangle is 29.6875