共用方式為


HOW TO:隱藏繼承的變數

更新:2007 年 11 月

衍生類別 (Derived Class) 會繼承其基底類別的所有定義。如果您想要使用和基底類別中的某個項目相同的名稱來定義變數,則可以在衍生類別中定義變數時,隱藏或「遮蔽」該基底類別項目。如果這樣做,則除非衍生類別中的程式碼明確略過主導遮蔽機制,否則程式碼就會存取您的變數。

另一個可能會讓您想要隱藏繼承的變數的原因是,這樣可以保護基底類別免於遭到修訂。基底類別可能會遭到變更,而繼承的項目也隨之改變。如果發生這種情況,則 Shadows 修飾詞 (Modifier) 會強制將衍生類別的參考解析為您的變數,而不是基底類別項目。

隱藏繼承的變數

  1. 確定您想要隱藏的變數是在類別 (Class) 層級 (不在任何程序內) 宣告。否則您就不需要隱藏它。

  2. 在您的衍生類別內,撰寫 Dim 陳述式 (Visual Basic) 來宣告變數。使用和繼承的變數相同的名稱。

  3. 在宣告中包含 Shadows 關鍵字。

    當衍生類別中的程式碼參考變數名稱時,編譯器會將參考解析為您的變數。

    下列範例說明遮蔽繼承變數的方法。

    Public Class shadowBaseClass
        Public shadowString As String = "This is the base class string."
    End Class
    Public Class shadowDerivedClass
        Inherits shadowBaseClass
        Public Shadows shadowString As String = "This is the derived class string."
        Public Sub showStrings()
            Dim s As String = "Unqualified shadowString: " & shadowString _
                & vbCrLf & "MyBase.shadowString: " & MyBase.shadowString
            MsgBox(s)
        End Sub
    End Class
    

    先前的範例在基底類別中宣告 shadowString 變數,並且在衍生類別中遮蔽這個變數。當名稱 shadowString 不限制時,在衍生類別中的 showStrings 程序會顯示字串的主導遮蔽版本。接著當 shadowString 以 MyBase 關鍵字加以限制時,會顯示遮蔽的版本。

穩固程式設計

遮蔽會使用相同名稱引入多個變數版本。當程式碼陳述式參考變數名稱時,編譯器解析參考的版本,取決於程式碼陳述式的位置和限定字串存在與否等因素。這有可能會增加參考到遮蔽變數不必要版本的風險。您可全面限定遮蔽變數的所有參考,以降低風險。

請參閱

工作

HOW TO:區分兩個相同名稱的元素

HOW TO:隱藏與您的變數名稱相同的變數

HOW TO:存取衍生類別所隱藏的變數

概念

當多個變數擁有相同名稱時解析參考

Visual Basic 中的遮蔽功能

遮蔽和覆寫的差異

參考

Overrides

其他資源

已宣告之項目的參考