強烈推薦VB.NET繼承類
VB.NET繼承類是一個這樣的特征即允許你擴展類,如果你需要一些功能,你可以創造一個新類,如果你需要的功能中的部分功能已經能由一個已經存在的類提供了,你可以擴展原來的那個類來構建一個新類。那么你新建的這個類成為子類或者VB.NET繼承類,原來的那個類稱為父類或者基類。擴充類的過程稱為擴展,有時術語 subclass或inherit 用于描述擴展類的行為。在VB.NET中一個類只能有一個父類,多個父類的情況是不允許的。
在語法構成上,聲明一個擴展類在類名后面使用分號,分號后面使用Inherits和父類名,例如,擴展類Employee創建一個新類Manager,代碼如下
- Listing 9: Extending a class
- Imports System
- Class Employee
- Dim salary As Decimal = 40000
- Dim yearlyBonus As Decimal = 4000
- Public Sub PrintSalary()
- ' print the salary to the Console
- Console.Write(salary)
- End Sub
- End Class
- Class Manager: Inherits Employee
- End Class
如果單詞Inherits 顯示在下一行,那么就不需要分號,如:
- Class Manager
- Inherits Employee
- End Class
現在你可以初始化一個Manager對象,使用Manager對象中的成員,如下面的代碼
- Class Employee
- Public salary As Decimal = 40000
- Public yearlyBonus As Decimal = 4000
- Public Sub PrintSalary()
- ' print the salary to the Console
- Console.Write(salary)
- End Sub
- End Class
- Class Manager: Inherits Employee
- End Class
- Module Module1
- Public Sub Main()
- Dim manager As Manager
- manager = New Manager()
- manager.PrintSalary()
- End Sub
- End Module
下面的例子中顯示了在manage類中添加一個新方法PrintBonus
- Class Manager: Inherits Employee
- Public Sub PrintBonus()
- Console.Write(yearlyBonus)
- End Sub
- End Class
注意成員訪問限制的使用,比如說如果設定yearlyBonus域為私有,那么manage類就不能訪問他,否則在編譯時就會得出錯誤結論。
#t#VB.NET繼承類只是一個普通的實踐。事實上,.NET Framework類庫由不同層次的類組成,他們分別繼承于其他的類。比如,Windows.Forms名字空間中的button類是 ButtonBase類的子類,而ButtonBase類本身又是Control類的子類,所有類最終都以System.Object作為他們的根,在.NET Framework類庫中System.Object又稱為根或者超類。
Public Class MyForm : Inherits System.Windows.Forms.Form
End Class
聲明的這個空白類,經編譯執行后生成一個windows表單,你一行代碼都用不作寫就可以創建一個表單,這是因為myform繼承于System.Windows.Forms.Form,他也繼承了form的功能。