方法: 継承された変数を隠す (Visual Basic)
派生クラスは、基本クラスのすべての定義を継承します。 基本クラスの要素として同じ名前を使用して変数を定義する場合、派生クラスに変数を定義する際に、基本クラスの要素を非表示にしたり、シャドウにできます。 これを行う場合、シャドウ機構を明示的にバイパスしない限り、派生クラス内のコードはその変数にアクセスします。
継承された変数を非表示にするもう 1 つの理由は、基本クラスのリビジョン変更から保護することです。 継承している要素を変更するように、基本クラスを変えることもできます。 このような変更があった場合、Shadows 修飾子は、派生クラスからの参照を、基本クラスの要素に解決するのではなく、継承された変数に解決します。
継承された変数を隠すには
隠す変数がクラス レベル (プロシージャの外) で宣言されていることを確認します。 そうでない場合、これを隠す必要がありません。
派生クラス内で、変数を宣言する Dim ステートメント (Visual Basic) を記述します。 継承された変数の名前と同じ名前を使用します。
宣言に 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)
参照
概念
シャドウとオーバーライドの違い (Visual Basic)
Visual Basic における Me、My、MyBase、MyClass