為你解疑:VB.NET繼承原理分析
現(xiàn)實(shí)生活中子女繼承父母的產(chǎn)業(yè),那是必然的,在編程中我們也常常用子類繼承父類的特性,VB.NET繼承是類為了得到父界面或者現(xiàn)有父類的一種能力。當(dāng)創(chuàng)建一個(gè)新的從父界面或者現(xiàn)有父類繼承而來的類的時(shí)候,我們就為原來的類創(chuàng)建了一個(gè)子類。這就是我們所知的父子關(guān)系。
現(xiàn)有許多關(guān)于繼承的術(shù)語,但是很多是多余的。原來的類,即我們所繼承的界面和行為可以由以下的幾種互換的說法:
Parent class (父類)
Superclass (超級(jí)類)
Base class (基類)
#T#VB.NET繼承是用于生物學(xué)上的名詞。比如,狗是犬科動(dòng)物而犬科動(dòng)物又是哺乳動(dòng)物,因此作為犬科動(dòng)物,狗繼承了哺乳動(dòng)物所有的屬性和行為,這就是繼承的原始涵義,即生物學(xué)上的繼承。在這里借用繼承這個(gè)名詞用于面向?qū)ο笾校哂性S多相似之處。為了在VB中滿足許多程序設(shè)計(jì)人員能夠象在Visual C++中利用面向?qū)ο蟮墓δ?,特別是繼承的功能,VB.NET開始有了繼承的概念。但是VB.NET還是不允許多重繼承,即子類不能有多個(gè)父類繼承而來,它只能繼承一個(gè)父類。而VB.NET允許深度的繼承分級(jí)結(jié)構(gòu),即一個(gè)子類可以有另外一個(gè)子類繼承而來;但是VB.NET還是不允許同時(shí)繼承多個(gè)父類。
在父子關(guān)系中,父對(duì)象可以擁有多個(gè)子對(duì)象,而子對(duì)象雖然都是由父對(duì)象繼承而來但是它們是不同類型的。舉個(gè)例子,一群子女雖然都是由父母生育的,但是他們還是有不同的相貌、性格等等。
接下來我們詳細(xì)介紹VB.NET繼承。這個(gè)項(xiàng)目的數(shù)值應(yīng)該要驗(yàn)證一下確保它指一個(gè)實(shí)際的產(chǎn)品,并且可能的話我們也想提供產(chǎn)品的描述,所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
- (此處你可以從數(shù)據(jù)庫中轉(zhuǎn)載產(chǎn)品數(shù)據(jù))
- End Sub
- End Class
- 上面語句中我們已經(jīng)使用的繼承語句:
- 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類中加入的界面。