类模块——接口
类模块另外一种更为抽象的用法是作为接口,Excel VBA中没有真正的接口这种东西,接口也是使用类来实现的。
以前提到过,为了能够让代码复用,很重要的一点就是要尽量将要实现的方法抽象出来,尽量的去满足多种情况,而接口也能理解为是一种抽象,接口抽象到只定义要实现的方法和属性,只要实现了定义的方法和属性的类,就表示他们是同一种对象。
1、定义接口:
和创建类的方法一样,插入类模块,命名为Tester,创建属性、方法等:
Property Let TestValue(Value As Long)
End Property
Sub TestInterface()
End Sub
不需要具体的实现,只要一个框架就可以。
2、实现接口:
另外创建一个类,命名为CTest,输入语句:
Implements Tester
这个是必须的,说明CTest类要去实现Tester的方法、属性。
这个时候,可以尝试点击菜单调试-编译:
没有实现Tester里面定义的方法、属性,所以报错。
点击代码编辑器的上面下拉框,选择Tester,自动插入代码:
Private Property Let Tester_TestValue(RHS As Long)
End Property
这个就是Tester里面定义的属性,这时候可以再尝试点击菜单调试-编译,还是会出现那个提示,因为还有一个方法没有实现,点击右边的下拉框,点击TestInterface,自动插入代码:
Private Sub Tester_TestInterface()
End Sub
这时候,再点击调试就不会出提示了,因为CTest类已经实现了Tester定义的方法和属性。
3、使用接口:
在Tester_TestInterface里添加一条语句进行测试:
Private Sub Tester_TestInterface()
MsgBox "TestInterface"
End Sub
普通模块测试代码:
Sub TestInterface()
Dim ci As Tester
Set ci = New CTest
ci.TestInterface
Set ci = Nothing
End Sub
定义的是Tester类型变量,但是却可以赋值CTest变量,这就是接口的特殊之处。
所以接口的作用非常的强大,想象一下,有一个非常复杂的数据处理过程,比如是数据排序,一般情况下都是将一维数组进行排序,一旦碰上了另外的数据结构,那么这个排序方法就要去修改了。
这种情况就可以使用接口进行抽象,把排序需要用到的方法和属性抽象出来,一般排序用到的就是Len(返回数据的个数)、Less(比较2个数据的大小)、Swap(交换2个数据的位置)。然后排序函数传入的参数修改为这个接口,再碰到新的数据结构需要排序的时候,只需要创建1个类,去实现那3个接口就可以了,能够极大的简化编码的过程。
- 移动设备HTML5页面布局
- Foundation:高级的响应式前端框架
- [信息安全] 2.密码工具箱(续)
- 脑科学发展的助推器
- BFIThumb:WordPress 中替代TimThumb 进行裁图的选择
- jquery 操作ajax 相关方法
- SQL SERVER 2008 Hierarchyid数据类型
- Html5 学习利器 Web Standards Update for Microsoft Visual Studio 2010 SP1
- MongoDB 客户端 MongoVue
- HttpClient介绍
- 10个使用 Foundation 框架开发的WordPress 主题推荐
- jQuery 效果使用
- 几款更换WordPress 后台UI 的插件推荐
- 入门:构建简单的Web API
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法