為你解疑:VB.NET繼承原理分析
現實生活中子女繼承父母的產業,那是必然的,在編程中我們也常常用子類繼承父類的特性,VB.NET繼承是類為了得到父界面或者現有父類的一種能力。當創建一個新的從父界面或者現有父類繼承而來的類的時候,我們就為原來的類創建了一個子類。這就是我們所知的父子關系。
現有許多關于繼承的術語,但是很多是多余的。原來的類,即我們所繼承的界面和行為可以由以下的幾種互換的說法:
Parent class (父類)
Superclass (超級類)
Base class (基類)
#T#VB.NET繼承是用于生物學上的名詞。比如,狗是犬科動物而犬科動物又是哺乳動物,因此作為犬科動物,狗繼承了哺乳動物所有的屬性和行為,這就是繼承的原始涵義,即生物學上的繼承。在這里借用繼承這個名詞用于面向對象中,具有許多相似之處。為了在VB中滿足許多程序設計人員能夠象在Visual C++中利用面向對象的功能,特別是繼承的功能,VB.NET開始有了繼承的概念。但是VB.NET還是不允許多重繼承,即子類不能有多個父類繼承而來,它只能繼承一個父類。而VB.NET允許深度的繼承分級結構,即一個子類可以有另外一個子類繼承而來;但是VB.NET還是不允許同時繼承多個父類。
在父子關系中,父對象可以擁有多個子對象,而子對象雖然都是由父對象繼承而來但是它們是不同類型的。舉個例子,一群子女雖然都是由父母生育的,但是他們還是有不同的相貌、性格等等。
接下來我們詳細介紹VB.NET繼承。這個項目的數值應該要驗證一下確保它指一個實際的產品,并且可能的話我們也想提供產品的描述,所ProductLine類的代碼如下:
- Public Class ProductLine
- Inherits LineItem
- Private mstrDescription As String
- Public ReadOnly Property Description() As String
- Get
- Return mstrDescription
- End Get
- End Property
- Public Sub New(ByVal ProductID As String)
- Item = ProductID
- (此處你可以從數據庫中轉載產品數據)
- End Sub
- End Class
- 上面語句中我們已經使用的繼承語句:
- Inherits LineItem
- 這條語句使ProductLine類獲得了LineItem類的所有的界面元素或者行為。所以我們可以如下編寫客戶代碼:
- Protected Sub Button1_Click(ByVal sender As Object, _
- ByVal e As System.EventArgs)
- Dim pl As ProductLine
- pl = New ProductLine(23abc
- MessageBox.Show(pl.Item)
- MessageBox.Show(pl.Description)
- End Sub
以上的代碼使用了從LineItem類繼承而來的Item屬性以及ProductLine中的Description屬性。
類似地,我們可以編寫ServiceLine:
- Public Class ServiceLine
- Inherits LineItem
- Private mdtDateProvided As Date
- Public Sub New()
- Quantity = 1
- End Sub
- Public Property DateProvided() As Date
- Get
- Return mdtDateProvided
- End Get
- Set
- mdtDateProvided = Value
- End Set
- End Property
- End Class
這里要注意的是,上面的繼承語句表明ServiceLine是LineItem的子類。而DateProvided屬性是從LineItem類中加入的界面。