VB.NET 重載、重寫與隱藏

重載、重寫與隱藏是繼承( Inherits )中的三個重要概念。

 

一、重載

 

相同方法或屬性的不同實現,根據參數數量、類型的不同有多個版本的實現方式。

 

用法

 

定義方法或屬性時使用 Overloads 關鍵字,程序將根據參數的數量、類型和順序選擇正確的版本實現。

 

示例

    Public Class TheClass

        Public Overloads Sub ToOverload(ByVal value As Integer )

            MsgBox("I got an integer:" & CStr (value))

        End Sub

        ' 重載

        Public Overloads Sub ToOverload(ByVal value As String )

            MsgBox("I got a string:" & value)

        End Sub

    End Class

使用

    Sub Main()

        Dim MyClass As TheClass

        MyClass.ToOverload(9527)

        MyClass.ToOverload("Hello Nobi!" )

    End Sub

運行結果

 

第一個對話框顯示: I got an integer 9527

第二個對話框顯示: I got a string Hello Nobi!

 

例外

 

在同一個類中重載時可以省略 Overloads 關鍵字。

 

二、重寫

 

與重載不同,重寫方法的參數數量、類型都完全相同,直接代替其所繼承的方法或屬性。

 

用法

用於派生類。

基類的方法或屬性定義時使用下列修飾符控制重寫:

 

關鍵字

功能

Overridable

允許重寫

NotOverridable

禁止重寫

MustOverride

必須重寫

Overrides

重寫方法、屬性,在派生類中實現

注:如果使用了 MustOverride ,則基類必須是 MustInherit 的抽象類。

 

示例

    ' 基類

    Public Class TheBase

        Public Overridable Sub Talk()

            MsgBox("What's up?" )

        End Sub

    End Class

    ' 派生類

    Public Class TheDerived

        Inherits TheBase

        Public Overrides Sub Talk()

            MsgBox("I'm not the base." )

        End Sub

    End Class

 

使用

    Sub Main()

        Dim TestClass As TheDerived

        TestClass.Talk()

    End Sub

 

運行結果

 

對話框顯示: I'm not the base.

 

三、隱藏

 

創建大範圍成員的局部版本,也可以用其他類型來隱藏一種類型,可以聲明相同名稱的屬性,以隱藏繼承的方法。

當派生類中某方法或屬性的名稱和範圍與基類中的方法或屬性衝突時,需要使用 Shadows 關鍵字。

此時將使用生存週期最短的那一個(即更加 局部 )。

 

用法

 

用於派生類。

 

示例

基類與派生類均定義了 Value 成員,名稱衝突,因此需要在派生類中使用 Shadows 關鍵字聲明。

    ' 基類

    Class TheBase

        Public Value As Double = 3.14

    End Class

    ' 派生類

    Class TheDerived : Inherits TheBase

        Public Shadows ReadOnly Property Value() As Double

            Get

                Return 9527

            End Get

        End Property

    End Class

 

使用

當使用 TheDerived 類對象的 Value 成員時,將選取最 局部 Value 屬性,而不是基類的 Value 變量。

    Sub Main()

        Dim TestClass As TheDerived

        MsgBox(TestClass.Value)

    End Sub

 

運行結果

 

對話框顯示: 9527

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章