派生类继承其基类的所有定义。 如果要使用与基类元素相同的名称定义变量,可以在派生类中定义变量时隐藏或 隐藏该基类元素。 如果这样做,派生类中的代码将访问您的变量,除非它显式绕过屏蔽机制。
你可能想要隐藏继承的变量的另一个原因是防止基类修订。 基类可能会发生变化,影响到您继承的元素。 如果发生这种情况,Shadows
修饰符会强制派生类引用解析到您的变量,而不是基类元素。
隐藏继承的变量
请确保要在类级别(任何过程之外)声明要隐藏的变量。 否则,无需隐藏它。
在派生类中,使用 Dim 语句 来声明变量。 使用与继承变量相同的名称。
在声明中包括 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
关键字限定后,它将显示阴影版本。
可靠编程
阴影引入了同名变量的多个版本。 当代码语句引用变量名称时,编译器解析引用的版本取决于代码语句的位置和限定字符串的存在等因素。 这会增加引用阴影变量意外版本的风险。 可以通过完全限定对阴影变量的所有引用来降低该风险。
另请参阅
- 对声明元素的引用
- Visual Basic 中的阴影
- 屏蔽与覆写之间的差异
- 如何:隐藏与您的变量同名的变量
- 如何:访问派生类隐藏的变量
- 重写
- Me、My、MyBase 和 MyClass
- 继承基础知识