파생 클래스의 코드가 변수에 액세스하는 경우 컴파일러는 일반적으로 액세스 가능한 가장 가까운 버전, 즉 액세스 가능한 버전에 대한 참조를 액세스 클래스에서 가장 적은 파생 단계로 확인합니다. 변수가 파생 클래스에 정의된 경우 코드는 일반적으로 해당 정의에 액세스합니다.
파생 클래스 변수가 기본 클래스의 변수를 숨기는 경우 기본 클래스 버전을 숨깁니다. 그러나 키워드로 한정하여 MyBase
기본 클래스 변수에 액세스할 수 있습니다.
파생 클래스에서 숨겨진 기본 클래스 변수에 액세스하려면
식 또는 대입 문에서 변수 이름
MyBase
앞에 키워드와 마침표(.
)를 지정합니다.컴파일러는 변수의 기본 클래스 버전에 대한 참조를 확인합니다.
다음 예제에서는 상속을 통해 그림자를 보여 줍니다. 섀도링 변수에 액세스하는 참조와 그림자를 우회하는 참조를 두 개 만듭니다.
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
그림자 버전을 표시합니다.
강력한 프로그래밍
의도하지 않은 버전의 그림자 변수를 참조할 위험을 낮추려면 그림자 변수에 대한 모든 참조를 완전히 한정할 수 있습니다. 섀도잉은 동일한 이름을 가진 변수의 여러 버전을 도입합니다. 코드 문이 변수 이름을 참조하는 경우 컴파일러가 참조를 확인하는 버전은 코드 문의 위치 및 정규화된 문자열의 존재와 같은 요인에 따라 달라집니다. 이렇게 하면 잘못된 버전의 변수를 참조할 위험이 높아질 수 있습니다.
참고하십시오
.NET