JavaScript Editor
JavaScript Debugger|
| ||
Although a class can inherit only from one base class, it can implement multiple interfaces. As in Java, an interface is a specification for a set of class members—not an implementation, just a specification. There's an example on the CD-ROM named Interfaces to show how this works. In this example, I'll define an interface named person and implement that interface in a class named employee to show that implementing interfaces is a little like inheriting from a base class. First, I create the person interface with the Interface statement, indicating that this interface consists of two methods, SetName and GetName, which set and get the name of a person:
Public Interface person
Sub SetName(ByVal PersonName As String)
Function GetName() As String
End Interface
Notice that there's no implementation of these methods here, just their declarations. As mentioned above, all an interface does is specify members; when you implement the interface, you must implement all the members yourself. You do that with the Implements keyword (which must come after any Inherits statements and before any Dim statements in a class). Here's how I implement the person interface in a class named employee; note that I specify which class method implements which interface method using the Implements keyword:
Public Class employee
Implements person
Dim Name As String
Sub SetName(ByVal PersonName As String) Implements person.SetName
Name = PersonName
End Sub
Function GetName() As String Implements person.GetName
Return Name
End Function
End Class
Now I can create a new object of the employee class named Edward:
Public Class Form1
Inherits System.Windows.Forms.Form
'Windows Form Designer generated code
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim Edward As New employee()
Edward.SetName("Edward")
TextBox1.Text = "You created " & Edward.GetName()
End Sub
End Class
That's how the Interfaces example functions. You can see it at work in Figure 12.3, where the Edward object of the employee class is created when you click the "Create an employee…" button.
One class also can implement multiple interfaces, which is as close as you're going to come to multiple inheritance in Visual Basic (and it's not all that close). For example, in the Interfaces example, I define an interface named executive in addition to the employee example; the executive interface specifies these methods—SetTitle, GetTitle, SetName, and GetName—like this:
Public Interface person
Sub SetName(ByVal PersonName As String)
Function GetName() As String
End Interface
Public Interface executive
Sub SetTitle(ByVal PersonName As String)
Function GetTitle() As String
Sub SetName(ByVal ExecutiveTitle As String)
Function GetName() As String
End Interface
Now I can create a class that implements the executive interface, and I'll call it vicepresident. This class will implement both the person and executive interfaces. Here's how it looks—note in particular that one method can implement multiple interface methods at the same time:
Public Class vicepresident
Implements person, executive
Dim Name As String
Dim Title As String
Sub SetTitle(ByVal ExecutiveTitle As String) Implements _
executive.SetTitle
Title = ExecutiveTitle
End Sub
Function GetTitle() As String Implements executive.GetTitle
Return Title
End Function
Sub SetName(ByVal PersonName As String) Implements person.SetName, _
executive.SetName
Name = PersonName
End Sub
Function GetName() As String Implements person.GetName, _
executive.GetName
Return Name
End Function
End Class
Now when the user clicks the "Create an executive…" button in the Interfaces example, I'll create a new vicepresident object named Sam, and set Sam's title to "vice president" like this:
Public Class Form1
Inherits System.Windows.Forms.Form
'Windows Form Designer generated code
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
Dim Sam As New vicepresident()
Sam.SetName("Sam")
Sam.SetTitle("vice president")
TextBox1.Text = "You created " & Sam.GetName() & ", " _
& Sam.GetTitle ()
End Sub
End Class
When you click the "Create an executive…" button, the Sam object, which implements multiple interfaces, is created, as you see in Figure 12.4.
|
| ||
Free JavaScript Editor
JavaScript Editor