我开始学习Access中的VBA。我读到该语言没有继承性。
然后我读了一个示例代码,看起来它实际上具有继承:
Dim ctrl As Control
...
If TypeOf ctrl Is TextBox Then ...
If TypeOf ctrl Is ListBox Then ...
在我看来,TextBox、ListBox 都是从 Control 继承的。有人可以解释一下吗?
不。它们并非源自Control
班级。他们实施Control
的定义/方法和属性签名。道路TypeOf
and Is
运算符的工作原理是检查类的实例是否实现 3 个类别之一(如下所列)。
open a new作业簿
转到VBE并添加
a 类模块并将其命名为:MyClass
在代码视图中仅添加Implements MyInterface
a 类模块并将其命名为:MyInterface
在代码视图中 -什么都不做/留空
a module并复制粘贴以下代码并运行它
Sub Main()
Dim cls As MyClass
Set cls = New MyClass
Debug.Print TypeOf cls Is MyClass
Debug.Print TypeOf cls Is MyInterface
End Sub
结果可能会令人惊讶
True
True
cls
多变的有两种类型 - MyClass
and MyInterface
如你看到的cls
不继承任何东西MyInterface
但定义。使用时TypeOf
and Is
它实际上显示为真,因为MyClass
实施MyInterface
。并不是因为它源自MyInterface
类但因为它实施 it.
现在,假设
result = TypeOf objectexpression Is typename
The TypeOf
运算符确定变量的运行时类型是否兼容typename。兼容性取决于类型类别typename。共有三类
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)