방법: 상속된 변수 숨기기(Visual Basic)
파생 클래스는 기본 클래스의 모든 정의를 상속합니다. 기본 클래스의 요소와 동일한 이름을 사용하여 변수를 정의하려는 경우 파생 클래스에서 변수를 정의할 때 해당 기본 클래스 요소를 숨기거나 섀도로 만들 수 있습니다. 이렇게 하면 섀도링 메커니즘을 명시적으로 우회하지 않는 한 파생 클래스의 코드가 변수에 액세스합니다.
상속된 변수를 숨기려는 또 다른 이유는 기본 클래스 수정 버전으로부터 보호하는 것입니다. 기본 클래스는 상속하는 요소를 변경하는 변경을 겪을 수 있습니다. 이 경우 Shadows
한정자는 파생 클래스의 참조를 기본 클래스 요소가 아닌 변수로 확인하도록 강제합니다.
상속된 변수를 숨기려면
숨기려는 변수가 클래스 수준에서 선언되어 있는지 확인합니다(프로시저 외부). 그러지 않으면 숨길 필요가 없습니다.
파생 클래스 내에서 변수를 선언하는 Dim 문을 작성합니다. 상속된 변수의 이름과 동일한 이름을 사용합니다.
선언에 섀도 키워드를 포함합니다.
파생 클래스의 코드가 변수 이름을 참조하는 경우 컴파일러는 변수에 대한 참조를 확인합니다.
다음 예제에서는 상속된 변수의 섀도를 보여 줍니다.
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