您好,登錄后才能下訂單哦!
小編給大家分享一下VB.NET如何實(shí)現(xiàn)基類繼承、重載、隱藏,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
通過聲明Inherits關(guān)鍵字,來標(biāo)識(shí)該類的基類是誰。Inherits 基類名
Sub New(s as string)'構(gòu)造,加入變量s 可要求強(qiáng)行賦值 '初始化 MyBase.New() '注意:這句話要放在sub內(nèi)的***句,基類帶參數(shù)時(shí)要標(biāo)明 End Sub Protected Overrides Sub Finalize()'析構(gòu) '收尾 MyBase.Finalize() End Sub
在基類中用Overridable修飾符來標(biāo)識(shí)允許基類中的屬性或方法在其派生類中被重寫,沒有標(biāo)識(shí)的其實(shí)就是默認(rèn)為有NotOverridable修飾符來隱式地標(biāo)識(shí),用于提醒編譯器該屬性或方法不可被重寫。
◆重寫: 在派生類中用Overrides重新編寫有Overridable標(biāo)識(shí)的基類的方法或?qū)傩浴?br/>◆重載: Overloads,用同樣的名稱,用不同的參數(shù)列表來創(chuàng)建多個(gè)方法和屬性,在調(diào)用時(shí)就可以適應(yīng)不同參數(shù)類型的要求。
◆隱藏: 用派生類的名稱代替基類的名稱,并非讓該名稱消失。Shadows方式,適用于任何元素類型,亦可聲明成任何元素類型。隱藏時(shí)在派生類中用private來修飾,它的子類就會(huì)繼承它基類的成員。
在編輯器中隱藏基類成員的提示
<System.ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> Public Shadows 基類名稱1,基類名稱2,.....
用來控制VB.NET基類成員訪問的修飾符
Friend : 只在當(dāng)前項(xiàng)目中可用
private : 只在本類中可用
protected : 在本類和本類的派生類中可用的成員
protected friend:在當(dāng)前項(xiàng)目和本類的派生類中可用
public :類以外的代碼也可以訪問
默認(rèn)值為:public
每當(dāng)創(chuàng)建類的實(shí)例時(shí),如果該對(duì)象中存在名為 New 的過程,則公共語言運(yùn)行庫 (CLR) 嘗試執(zhí)行它。New 是一種稱為“構(gòu)造函數(shù)”的過程,該構(gòu)造函數(shù)用于在對(duì)象中的任何其他代碼執(zhí)行之前初始化新對(duì)象。New 構(gòu)造函數(shù)可用于打開文件、連接到數(shù)據(jù)庫、初始化變量以及處理任何需要在可使用對(duì)象前完成的其他任務(wù)。
當(dāng)創(chuàng)建派生類的實(shí)例時(shí),基類的 Sub New 構(gòu)造函數(shù)首先執(zhí)行,然后執(zhí)行派生類中的構(gòu)造函數(shù)。這是因?yàn)?Sub New 構(gòu)造函數(shù)中的***行代碼使用語法 MyBase.New() 調(diào)用類層次結(jié)構(gòu)中該類本身緊上面的類的構(gòu)造函數(shù)。然后調(diào)用該類層次結(jié)構(gòu)中每個(gè)類的 Sub New 構(gòu)造函數(shù),直到到達(dá)基類的構(gòu)造函數(shù)。此時(shí),基類構(gòu)造函數(shù)中的代碼執(zhí)行,接著執(zhí)行所有派生類中每個(gè)構(gòu)造函數(shù)的代碼,***執(zhí)行最相近派生的類中的代碼。當(dāng)不再需要某對(duì)象時(shí),CLR 調(diào)用該對(duì)象的 Finalize 方法,然后釋放其內(nèi)存。Finalize 方法稱為“析構(gòu)函數(shù)”,因?yàn)樗鼒?zhí)行清理任務(wù),如保存狀態(tài)信息、關(guān)閉文件和與數(shù)據(jù)庫的連接,以及執(zhí)行在釋放對(duì)象前必須完成的其他任務(wù)。
當(dāng)調(diào)用派生類的 Sub Finalize 方法時(shí),首先執(zhí)行所需的任何清理任務(wù),然后使用語法 MyBase.Finalize() 顯式調(diào)用其基類的 Sub Finalize 方法。因此,Sub Finalize 方法首先從最相近派生的類開始運(yùn)行,***執(zhí)行VB.NET基類中的代碼。
VB.NET引入了一些語句和修飾符支持繼承,下表描述了VB.NET基類的繼承的語句和說明:
語句/修飾符 描述
Inherits: Inherits 語句--指明了當(dāng)前的類從哪個(gè)類繼承。Inherits 要害詞只用在類和接口中
NotInheritable: NotInheritable 修飾符--禁止用作基類
MustInherit: MustInherit修飾符--指明不能建立當(dāng)前類的實(shí)例。這個(gè)類只能被繼承
Overridable: Overridable 修飾符--答應(yīng)類的一個(gè)屬性或方法可以被Override。Public 方法缺省是 NotOverridable
Overrides: Overrides 修飾符--Override基類的一個(gè)屬性或方法
NotOverridable: NotOverridable 修飾符 (缺省)- -禁止類的一個(gè)屬性或方法被Override
MustOverride: MustOverride 修飾符--需要繼承的類Override的屬性或方法。當(dāng)使用MustOverride 要害詞的時(shí)候,方法的定義只包括Sub, Function和 Property 語句。要非凡強(qiáng)調(diào)的是,其他任何語句是不答應(yīng)沒有End Sub, End Function或者 End Property 語句。類中帶有MustOverride 方法都必須聲明為MustInherit。Public 方法缺省值是NotOverridable
Shadows: Shadows 修飾符--答應(yīng)重新使用被繼承的類成員的名字。Shadow不刪除繼承得來的類的類型成員,它僅僅是使所有被繼承的類型成員在派生類中不可使用。Shadow是在派生類中重新聲明類成員
Class A Public Sub F() Debug.Print("基類不能重寫") End Sub Public Overridable Sub G() Debug.Print("基類可重寫") End Sub Public Sub H() Debug.Print("A.H") End Sub End Class Class B Inherits A '繼承A Public Shadows F As String = "隱藏基類,重新生成一個(gè)" Public Overrides Sub G() Debug.Print("重寫") End Sub Public Overloads Sub G(ByVal s As Int32) Debug.Print("重載") End Sub '隱藏基類H成員,編輯器中看不到提示,但依然可以用 <System.ComponentModel.EditorBrowsable(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é)果:
基類不能重寫
基類可重寫
A.H
隱藏基類,重新生成一個(gè)
重寫
重載
3
看完了這篇文章,相信你對(duì)“VB.NET如何實(shí)現(xiàn)基類繼承、重載、隱藏”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。