VBA的面向接口编程

  工作中有时候会用到VBA(Visual Basic for Applications),不是很多,也没有专门去学习VBA,用的时候遇到问题就上网去查资料,解决问题了就放下了。

  今天被同事问到VBA中类的用法,我从来没有用过,就在网上查了资料,了解一些用法,也算对VBA多了一点认识。

  在查资料的时候看到implments单词,就是实现的意思,觉得很奇怪,难道VBA中的类还有其他的用法?

  VBA中不支持定义接口的数据类型,所以如果想要实现面向接口编程需要使用它独有的方式,为了掌握这一点,我在CSDN、博客园、B站、百度上搜资料,不理想,整整折腾了一下午的时间,反复试错和纠错。

  好在解决了。

  1、使用类来定义接口

  使用类来定义接口的时候,可以定义函数或者方法,里面不能有实现代码。

  就像下面的代码(类的名称为I接口):

Option Explicit

Public Function func() As String
    
End Function

Public Sub procedure()

End Sub

  2、接口类的实现

  使用Implements 父类名称

  必须对类的所有声明写上实现,函数名和过程名要遵循“父类名称_类中定义的函数名”或者“父类名称_类中定义的过程名”。

  可以再自行定义其他的函数、方法、属性等。

  就像下面的代码(实现的类基于I接口):

Option Explicit
Implements I接口

Public Function func() As String
    func = "类1自己的函数"
End Function

Public Sub procedure()
    Debug.Print "类1自己的过程"
End Sub


Public Function I接口_func() As String
    I接口_func = "I接口_func1"
End Function

Public Sub I接口_procedure()
    Debug.Print "I接口_procedure1"
End Sub

  3、测试VBA的面向接口编程

Option Explicit

Sub test()
    Dim P1 As C类1
    Set P1 = New C类1
    
    Dim P2 As C类2
    Set P2 = New C类2
    
    Debug.Print P1.I接口_func
    P1.I接口_procedure
    Debug.Print P1.func
    P1.procedure
    
    Debug.Print "----------------------------------------"
    Debug.Print P2.I接口_func
    P2.I接口_procedure
    Debug.Print P2.func
    P2.procedure
    Debug.Print "----------------------------------------"
    
    Dim Q1 As I接口
    Set Q1 = New I接口
    
    Set Q1 = P1
    Debug.Print Q1.func
    Q1.procedure
    Debug.Print "----------------------------------------"
    
    Set Q1 = P2
    Debug.Print Q1.func
    Q1.procedure
    
End Sub

  输出结果:

I接口_func1
I接口_procedure1
类1自己的函数
类1自己的过程
----------------------------------------
I接口_func2
I接口_procedure2
类2自己的函数
类2自己的过程
----------------------------------------
I接口_func1
I接口_procedure1
----------------------------------------
I接口_func2
I接口_procedure2

VBA的面向接口编程_第1张图片

   有了这些知识,感觉VBA一下子就了一点灵气。

你可能感兴趣的:(VB,+,VBScript,+,VBA,开发语言,VBA,面向接口)