接口繼承
創建抽象類時,請使用關鍵字 interface 而不是 class。為接口命名,然后定義需要子類實現的所有屬性和方法。這是因為基類中沒有可以實現的屬性和方法,它只包含一般數據,而不包含方法。您所創建的只是一個合約,它規定所有使用此接口的子類都必須遵循一定的規則。
1. 現在,請在已創建的項目中添加一個新類。
2. 從 visual studio 菜單中,單擊 project(項目),然后單擊 add class(添加類)。
3. 在類中添加以下代碼:4. interface person
5. property firstname() as string
6. property lastname() as string
7.
8. sub print()
9. sub talk()
end interface
您會發現,您定義屬性和子過程的方法與您通常定義這些屬性和過程的方法一樣。唯一的差別在于,您沒有為它們編寫任何代碼。現在來看看如何在類定義中使用此接口。
10. 在上一步驟創建的類文件中添加以下代碼:11. public class employee
12. implements person
13.
14. private mstrfirstname as string
15. private mstrlastname as string
16.
17. property firstname() as string _
18. implements person.firstname
19. get
20. return mstrfirstname
21. end get
22. set
23. mstrfirstname = value
24. end set
25. end property
26.
27. property lastname() as string _
28. implements person.lastname
29. get
30. return mstrlastname
31. end get
32. set
33. mstrlastname = value
34. end set
35. end property
36.
37. sub print() implements person.print
38. ' 在此處添加一些代碼
39. end sub
40.
41. sub talk() implements person.talk
42. ' 在此處添加一些代碼
43. end sub
end class
在 employee 類定義之后的第一行是 implements person。此關鍵字表示您要遵守 person 接口中定義的合約?,F在您可以定義該合約中的所有屬性和方法。在每一個 property 語句后面,都必須包含 implements 關鍵字,并且必須指定接口的名稱和您正在使用的方法/屬性的名稱(兩個名稱之間有一個點 [.])。visual basic .net 將跟蹤每一個接口,在所有接口創建完畢之前,您不能編譯應用程序。
如果要運行代碼,則需要創建相應的子過程,因為在上面的示例中這些子過程被保留為空。創建所有子過程后,您就可以與您通常創建并使用任何其他對象一樣,聲明并使用新的 employee 對象了。 選擇要使用的繼承類型
有時候很難決定到底是使用實現繼承還是使用接口繼承,很多情況下,可能兩種繼承都會用到,但都只涉及一小部分。例如,您可能需要在 line 類中添加必須被子類覆蓋的方法定義,在過程定義中使用 mustoverride 關鍵字即可實現此操作。public mustoverride sub init()
將此定義添加到類中以后,其作用類似于一個接口。在子類中,必須定義 init 方法,并且該方法必須使用 overrides 關鍵字。以下是如何定義 init 方法的示例:public overrides sub init()
mstrdelim = " "
mstrline = "測試行"
end sub
同樣,請記住使用 overrides 關鍵字。該關鍵字用于通知編譯器此方法將覆蓋父類中的 init 方法。
注意: microsoft .net 框架的聯機幫助中提供了設計指南,可以幫助您決定要使用的繼承類型。 阻止繼承
在某些情況下,您可能不希望其他類繼承您的類。如果是這樣,您可以使用關鍵字 notinheritable 來阻止類的繼承。public class notinheritable employee
' 類定義
end class
visual basic 6.0 以來的新增功能
使用 visual basic .net,您可以繼承 .net 框架包含的所有類。您可以創建自己的類,使這些類繼承現有的類;并通過對代碼進行簡單更改來添加或刪除功能。 總結
本文介紹了如何繼承基類,如何向基類添加其他屬性,以及如何使用 overrides 關鍵字來替換基類中定義的功能。還介紹了使用 mybase 關鍵字調用基類中的方法,從而擴展基類的功能。雖然繼承并不是對所有的應用程序都適用,但如果使用正確,繼承將成為一種非常強大的工具。