An abstract class member is a member that is specified in a class but not implemented. Classes that inherit from the class will have to implement the abstract member. Abstract members are a technique for ensuring a common interface with descendant classes. An abstract class is a class you cannot instantiate. A pure abstract class is a class with only abstract members.
Languages Focus: Abstraction
Abstraction is supported at various levels with each language. A language could enforce abstraction at the class level (either enforcing a no-instantiation rule or a only abstract members rule), and with class members (member methods and/or properties).
VB.Net Abstraction
VB.Net supports abstract class members and abstract classes using the MustInherit and MustOverride modifiers.
An abstract class is indicated with a MustInherit modifier and is a class with one or more abstract members and you cannot instantiate an abstract class. However, you can have additional implemented methods and properties.
An abstract member is either a method (implicitly virtual), property, indexer, or event in an abstract class. You can add abstract members ONLY to abstract classes using the MustOverride keyword. Then you override it in a descendant class with Overrides.
Syntax Example: Public MustInherit Class Cyborg
Public MustOverride Sub Speak(ByVal pMessage As String)
End Class
Public Class Series600
Inherits Cyborg
Public Overrides Sub Speak(ByVal pMessage As String)
MessageBox.Show(pMessage)
End Sub
End Class
An Abstract Example
The following demonstrates the abstract method above. The following assumes a form with a button.
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object,_
ByVal e As System.EventArgs) Handles Button1.Click
Dim MyKiller As New Series600
MyKiller.Greet()
MyKiller.Speak("I am alive.")
End Sub
End Class
Public MustInherit Class Cyborg
Public MustOverride Sub Speak(ByVal pMessage As String)
Public MustOverride Sub Walk()
'You can implement methods in an abstract class!
Public Overridable Sub Greet()
MessageBox.Show("Hello human")
End Sub
End Class
Public Class Series600
Inherits Cyborg
Public Overrides Sub Greet()
MessageBox.Show("Hello")
End Sub
Public Overrides Sub Speak(ByVal pMessage As String)
MessageBox.Show(pMessage)
End Sub
Public Overrides Sub Walk()
'Implement walk here.
End Sub
End Class
Abstract Properties
VB.Net does support setting a property to abstract with the MustOverride keyword. A single property line with the MustOverride keyword is all that's required. In most cases, you'll probably also want to...