次の方法で共有


方法 : 継承された変数を隠す

更新 : 2007 年 11 月

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

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

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

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

  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 変数を宣言し、派生クラスでこれをシャドウしています。派生クラスのプロシージャ showStrings では、名前 shadowString が修飾されていない場合、文字列のシャドウ バージョンが表示されます。shadowString が MyBase キーワードによって修飾されている場合は、次にシャドウされたバージョンが表示されます。

堅牢性の高いプログラム

シャドウでは、同じ名前で複数のバージョンの変数を取り入れます。コード ステートメントで変数名を参照する際、コンパイラが参照を解決するバージョンは、コード ステートメントの場所や修飾文字列の有無などによって異なります。このことは、意図しないバージョンのシャドウ変数を参照してしまう危険性が増大することになります。シャドウ変数に対するすべての参照を完全に修飾することによって、この危険性を軽減することができます。

参照

処理手順

方法 : 同じ名前を持つ 2 つの要素を区別する

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

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

概念

同じ名前を持つ複数の変数がある場合に参照を解決する

Visual Basic におけるシャドウ

シャドウとオーバーライドの違い

参照

Overrides

その他の技術情報

宣言された要素の参照