逐步解說:建立和實作介面 (Visual Basic)
介面描述屬性、方法和事件的特性,但根據結構或類別保留實作細節。
這個逐步解說示範如何宣告和實作介面。
注意事項 |
---|
這個逐步解說中並未提供有關如何建立使用者介面的資訊。 |
注意事項 |
---|
您的電腦可能會在下列說明中,以不同名稱或位置顯示某些 Visual Studio 使用者介面項目。您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。如需詳細資訊,請參閱 Visual Studio 設定。 |
若要定義介面
開啟新的 Visual Basic Windows 應用程式專案。
按一下 [專案] 功能表上的 [加入模組],將新模組加入專案中。
將新模組命名為 Module1.vb 並按一下 [加入]。接著會顯示新模組的程式碼。
在 Module 與 End Module 陳述式之間輸入 Interface TestInterface,並按 ENTER,以在 Module1 中定義名為 TestInterface 的介面。[程式碼編輯器] 會縮排 Interface 關鍵字,並加入 End Interface 陳述式來形成程式碼區塊。
在 Interface 與 End Interface 陳述式之間放入下列程式碼以分別定義一個屬性、方法和事件:
Property Prop1() As Integer Sub Method1(ByVal X As Integer) Event Event1()
實作
您可能會注意到用於宣告介面成員的語法與用於宣告類別成員的語法不同。這樣的差異反映出介面無法包含實作程式碼的事實。
若要實作介面
藉由將下列陳述式加入到 Module1 中 End Interface 陳述式之後,End Module 陳述式之前,再按 ENTER,來新增名為 ImplementationClass 的類別:
Class ImplementationClass
如果您在整合式開發環境中作業,當您按 ENTER 時,[程式碼編輯器] 會提供相符的 End Class 陳述式。
將下列 Implements 陳述式加到 ImplementationClass,以便命名類別實作的介面:
Implements TestInterface
當 Implements 陳述式與其他項目分隔並列於類別或結構最上方時,這個陳述式就會指示類別或結構實作介面。
若是在整合開發環境中工作,則當您按 ENTER 時,[程式碼編輯器] 將實作 TestInterface 所需的類別成員,您可以略過下一步。
若不是在整合開發環境中工作,則必須實作介面 MyInterface 的所有成員。將下列程式碼加到 ImplementationClass 以實作 Event1、Method1 和 Prop1:
Event Event1() Implements TestInterface.Event1 Public Sub Method1(ByVal X As Integer) Implements TestInterface.Method1 End Sub Public Property Prop1() As Integer Implements TestInterface.Prop1 Get End Get Set(ByVal value As Integer) End Set End Property
正在實作的介面和介面成員的 Implements 陳述式名稱。
將私用欄位加入至儲存屬性值的類別中,以完成 Prop1 的定義:
' Holds the value of the property. Private pval As Integer
從屬性 get 存取子傳回 pval 的值。
Return pval
在屬性 set 存取子中設定 pval 的值。
pval = value
加入下列程式碼以完成 Method1 的定義。
MsgBox("The X parameter for Method1 is " & X) RaiseEvent Event1()
若要測試介面的實作
在 [方案總管] 中的專案啟動表單上按一下滑鼠右鍵,再按一下 [檢視程式碼]。接著編輯器會顯示啟動表單的類別。根據預設,啟動表單稱為 Form1。
將以下 testInstance 欄位加入 Form1 類別:
Dim WithEvents testInstance As TestInterface
藉由將 testInstance 宣告為 WithEvents,Form1 類別可處理其事件。
將下列事件處理常式加入 Form1 類別,以便處理由 testInstance 引發的事件:
Sub EventHandler() Handles testInstance.Event1 MsgBox("The event handler caught the event.") End Sub
將名為 Test 的副程式加到 Form1 類別來測試實作類別:
Sub Test() ' Create an instance of the class. Dim T As New ImplementationClass ' Assign the class instance to the interface. ' Calls to the interface members are ' executed through the class instance. testInstance = T ' Set a property. testInstance.Prop1 = 9 ' Read the property. MsgBox("Prop1 was set to " & testInstance.Prop1) ' Test the method and raise an event. testInstance.Method1(5) End Sub
Test 程序可建立實作 MyInterface 之類別的執行個體,將執行個體指派給 testInstance 欄位,設定屬性,再透過介面執行方法。
加入程式碼來從啟動表單的 Form1 Load 程序呼叫 Test 程序:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Test() ' Test the class. End Sub
按 F5 執行 Test 程序。接著會顯示「Prop1 設定為 9」的訊息。在按一下 [確定] 後,會顯示「Method1 的 X 參數為 5」的訊息。按一下 [確定] 隨即會顯示「事件處理常式攔截了該事件」的訊息。