方法: 継承された変数を隠す (Visual Basic)

派生クラスは、基本クラスのすべての定義を継承します。 基本クラスの要素として同じ名前を使用して変数を定義する場合、派生クラスに変数を定義する際に、基本クラスの要素を非表示にしたり、シャドウにできます。 これを行う場合、シャドウ機構を明示的にバイパスしない限り、派生クラス内のコードはその変数にアクセスします。

継承された変数を非表示にするもう 1 つの理由は、基本クラスのリビジョン変更から保護することです。 継承している要素を変更するように、基本クラスを変えることもできます。 このような変更があった場合、Shadows 修飾子は、派生クラスからの参照を、基本クラスの要素に解決するのではなく、継承された変数に解決します。

継承された変数を隠すには

  1. 隠す変数がクラス レベル (プロシージャの外) で宣言されていることを確認します。 そうでない場合、これを隠す必要がありません。

  2. 派生クラス内で、変数を宣言する Dim ステートメント (Visual Basic) を記述します。 継承された変数の名前と同じ名前を使用します。

  3. 宣言に Shadows (Visual Basic) キーワードを含めます。

    派生クラス内のコードから変数名を参照するとき、コンパイラは参照を継承した変数に解決します。

    継承された変数のシャドウの例を次に示します。

    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 キーワードで修飾されている場合には、シャドウされたバージョンが表示されます。

信頼性の高いプログラミング

シャドウでは、同じ名前の複数のバージョンの変数を取り入れます。 コード ステートメントによって変数名が参照されているとき、コンパイラによって参照が解決されるバージョンは、コード ステートメントの位置および修飾する文字列の存在などの要因に依存しています。 これにより、意図しないバージョンのシャドウされた変数を参照するリスクが増加する可能性があります。 シャドウされた変数へのすべての参照を完全修飾することによって、このリスクを低減させることができます。

参照

処理手順

方法: 自分で宣言した変数と同じ名前の変数を隠す (Visual Basic)

方法: 派生クラスによって非表示になっている変数にアクセスする (Visual Basic)

参照

Overrides (Visual Basic)

概念

Visual Basic におけるシャドウ

シャドウとオーバーライドの違い (Visual Basic)

Visual Basic における Me、My、MyBase、MyClass

継承の基本 (Visual Basic)

その他の技術情報

宣言された要素の参照 (Visual Basic)