新聞中心
很喜歡用VB.NET開(kāi)發(fā)語(yǔ)言,在網(wǎng)上也經(jīng)常收集,自己也總結(jié)了一點(diǎn)小筆記,在這里共大家參考一下,本文主要對(duì)VB.NET基類(lèi)的繼承,重寫(xiě),重載,隱藏的概念和方法進(jìn)行總結(jié),來(lái)看看吧。

成都創(chuàng)新互聯(lián)公司主營(yíng)大石橋網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都APP應(yīng)用開(kāi)發(fā),大石橋h5微信小程序定制開(kāi)發(fā)搭建,大石橋網(wǎng)站營(yíng)銷(xiāo)推廣歡迎大石橋等地區(qū)企業(yè)咨詢(xún)
通過(guò)聲明Inherits關(guān)鍵字,來(lái)標(biāo)識(shí)該類(lèi)的基類(lèi)是誰(shuí)。Inherits 基類(lèi)名
- Sub New(s as string)'構(gòu)造,加入變量s 可要求強(qiáng)行賦值
- '初始化
- MyBase.New() '注意:這句話(huà)要放在sub內(nèi)的***句,基類(lèi)帶參數(shù)時(shí)要標(biāo)明
- End Sub
- Protected Overrides Sub Finalize()'析構(gòu)
- '收尾
- MyBase.Finalize()
- End Sub
在基類(lèi)中用Overridable修飾符來(lái)標(biāo)識(shí)允許基類(lèi)中的屬性或方法在其派生類(lèi)中被重寫(xiě),沒(méi)有標(biāo)識(shí)的其實(shí)就是默認(rèn)為有NotOverridable修飾符來(lái)隱式地標(biāo)識(shí),用于提醒編譯器該屬性或方法不可被重寫(xiě)。
◆重寫(xiě): 在派生類(lèi)中用Overrides重新編寫(xiě)有Overridable標(biāo)識(shí)的基類(lèi)的方法或?qū)傩浴?br />◆重載: Overloads,用同樣的名稱(chēng),用不同的參數(shù)列表來(lái)創(chuàng)建多個(gè)方法和屬性,在調(diào)用時(shí)就可以適應(yīng)不同參數(shù)類(lèi)型的要求。
◆隱藏: 用派生類(lèi)的名稱(chēng)代替基類(lèi)的名稱(chēng),并非讓該名稱(chēng)消失。Shadows方式,適用于任何元素類(lèi)型,亦可聲明成任何元素類(lèi)型。隱藏時(shí)在派生類(lèi)中用private來(lái)修飾,它的子類(lèi)就會(huì)繼承它基類(lèi)的成員。
在編輯器中隱藏基類(lèi)成員的提示
(ComponentModel.EditorBrowsableState.Never)> Public Shadows 基類(lèi)名稱(chēng)1,基類(lèi)名稱(chēng)2,.....
用來(lái)控制VB.NET基類(lèi)成員訪問(wèn)的修飾符
Friend : 只在當(dāng)前項(xiàng)目中可用
private : 只在本類(lèi)中可用
protected : 在本類(lèi)和本類(lèi)的派生類(lèi)中可用的成員
protected friend:在當(dāng)前項(xiàng)目和本類(lèi)的派生類(lèi)中可用
public :類(lèi)以外的代碼也可以訪問(wèn)
默認(rèn)值為:public
每當(dāng)創(chuàng)建類(lèi)的實(shí)例時(shí),如果該對(duì)象中存在名為 New 的過(guò)程,則公共語(yǔ)言運(yùn)行庫(kù) (CLR) 嘗試執(zhí)行它。New 是一種稱(chēng)為“構(gòu)造函數(shù)”的過(guò)程,該構(gòu)造函數(shù)用于在對(duì)象中的任何其他代碼執(zhí)行之前初始化新對(duì)象。New 構(gòu)造函數(shù)可用于打開(kāi)文件、連接到數(shù)據(jù)庫(kù)、初始化變量以及處理任何需要在可使用對(duì)象前完成的其他任務(wù)。
當(dāng)創(chuàng)建派生類(lèi)的實(shí)例時(shí),基類(lèi)的 Sub New 構(gòu)造函數(shù)首先執(zhí)行,然后執(zhí)行派生類(lèi)中的構(gòu)造函數(shù)。這是因?yàn)?Sub New 構(gòu)造函數(shù)中的***行代碼使用語(yǔ)法 MyBase.New() 調(diào)用類(lèi)層次結(jié)構(gòu)中該類(lèi)本身緊上面的類(lèi)的構(gòu)造函數(shù)。然后調(diào)用該類(lèi)層次結(jié)構(gòu)中每個(gè)類(lèi)的 Sub New 構(gòu)造函數(shù),直到到達(dá)基類(lèi)的構(gòu)造函數(shù)。此時(shí),基類(lèi)構(gòu)造函數(shù)中的代碼執(zhí)行,接著執(zhí)行所有派生類(lèi)中每個(gè)構(gòu)造函數(shù)的代碼,***執(zhí)行最相近派生的類(lèi)中的代碼。當(dāng)不再需要某對(duì)象時(shí),CLR 調(diào)用該對(duì)象的 Finalize 方法,然后釋放其內(nèi)存。Finalize 方法稱(chēng)為“析構(gòu)函數(shù)”,因?yàn)樗鼒?zhí)行清理任務(wù),如保存狀態(tài)信息、關(guān)閉文件和與數(shù)據(jù)庫(kù)的連接,以及執(zhí)行在釋放對(duì)象前必須完成的其他任務(wù)。
當(dāng)調(diào)用派生類(lèi)的 Sub Finalize 方法時(shí),首先執(zhí)行所需的任何清理任務(wù),然后使用語(yǔ)法 MyBase.Finalize() 顯式調(diào)用其基類(lèi)的 Sub Finalize 方法。因此,Sub Finalize 方法首先從最相近派生的類(lèi)開(kāi)始運(yùn)行,***執(zhí)行VB.NET基類(lèi)中的代碼。
VB.NET引入了一些語(yǔ)句和修飾符支持繼承,下表描述了VB.NET基類(lèi)的繼承的語(yǔ)句和說(shuō)明:
語(yǔ)句/修飾符 描述
Inherits: Inherits 語(yǔ)句--指明了當(dāng)前的類(lèi)從哪個(gè)類(lèi)繼承。Inherits 要害詞只用在類(lèi)和接口中
NotInheritable: NotInheritable 修飾符--禁止用作基類(lèi)
MustInherit: MustInherit修飾符--指明不能建立當(dāng)前類(lèi)的實(shí)例。這個(gè)類(lèi)只能被繼承
Overridable: Overridable 修飾符--答應(yīng)類(lèi)的一個(gè)屬性或方法可以被Override。Public 方法缺省是 NotOverridable
Overrides: Overrides 修飾符--Override基類(lèi)的一個(gè)屬性或方法
NotOverridable: NotOverridable 修飾符 (缺省)- -禁止類(lèi)的一個(gè)屬性或方法被Override
MustOverride: MustOverride 修飾符--需要繼承的類(lèi)Override的屬性或方法。當(dāng)使用MustOverride 要害詞的時(shí)候,方法的定義只包括Sub, Function和 Property 語(yǔ)句。要非凡強(qiáng)調(diào)的是,其他任何語(yǔ)句是不答應(yīng)沒(méi)有End Sub, End Function或者 End Property 語(yǔ)句。類(lèi)中帶有MustOverride 方法都必須聲明為MustInherit。Public 方法缺省值是NotOverridable
Shadows: Shadows 修飾符--答應(yīng)重新使用被繼承的類(lèi)成員的名字。Shadow不刪除繼承得來(lái)的類(lèi)的類(lèi)型成員,它僅僅是使所有被繼承的類(lèi)型成員在派生類(lèi)中不可使用。Shadow是在派生類(lèi)中重新聲明類(lèi)成員
- Class A
- Public Sub F()
- Debug.Print("基類(lèi)不能重寫(xiě)")
- End Sub
- Public Overridable Sub G()
- Debug.Print("基類(lèi)可重寫(xiě)")
- End Sub
- Public Sub H()
- Debug.Print("A.H")
- End Sub
- End Class
- Class B
- Inherits A '繼承A
- Public Shadows F As String = "隱藏基類(lèi),重新生成一個(gè)"
- Public Overrides Sub G()
- Debug.Print("重寫(xiě)")
- End Sub
- Public Overloads Sub G(ByVal s As Int32)
- Debug.Print("重載")
- End Sub
- '隱藏基類(lèi)H成員,編輯器中看不到提示,但依然可以用
(System.ComponentModel.EditorBrowsableState.Never)> Public Shadows h As Int16 = "3" - End Class
- Public Class Form1
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- Dim b As New B()
- Dim a As New A
- a.F()
- a.G()
- a.H()
- Debug.Print(b.F)
- b.G()
- b.G(3)
- Debug.Print(b.h)
- End Sub
- End Class
輸出結(jié)果:
基類(lèi)不能重寫(xiě)
基類(lèi)可重寫(xiě)
A.H
隱藏基類(lèi),重新生成一個(gè)
重寫(xiě)
重載
3
當(dāng)前標(biāo)題:關(guān)于VB.NET基類(lèi)繼承、重載、隱藏的總結(jié)歸納
標(biāo)題鏈接:http://www.5511xx.com/article/ccsocec.html


咨詢(xún)
建站咨詢(xún)
