方法 : 継承された変数を隠す
更新 : 2007 年 11 月
派生クラスは、基本クラスのすべての定義を継承します。基本クラスの要素として同じ名前を使用して変数を定義する場合、派生クラスに変数を定義する際に、基本クラスの要素を非表示にしたり、シャドウにできます。これを行う場合、シャドウ機構を明示的にバイパスしない限り、派生クラス内のコードはその変数にアクセスします。
継承された変数を非表示にするもう 1 つの理由は、基本クラスのリビジョン変更から保護することです。継承している要素を変更するように、基本クラスを変えることもできます。このような変更があった場合、Shadows 修飾子は、派生クラスからの参照を、基本クラスの要素に解決するのではなく、継承された変数に解決します。
継承された変数を隠すには
隠す変数がクラス レベル (プロシージャの外) で宣言されていることを確認します。そうでない場合、これを隠す必要がありません。
派生クラス内で、変数を宣言する Dim ステートメント (Visual Basic) を記述します。継承された変数の名前と同じ名前を使用します。
宣言に 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 キーワードによって修飾されている場合は、次にシャドウされたバージョンが表示されます。
堅牢性の高いプログラム
シャドウでは、同じ名前で複数のバージョンの変数を取り入れます。コード ステートメントで変数名を参照する際、コンパイラが参照を解決するバージョンは、コード ステートメントの場所や修飾文字列の有無などによって異なります。このことは、意図しないバージョンのシャドウ変数を参照してしまう危険性が増大することになります。シャドウ変数に対するすべての参照を完全に修飾することによって、この危険性を軽減することができます。
参照
処理手順
方法 : 派生クラスによって非表示になっている変数にアクセスする