简单的界面 - 可飞行

接口 Flyable 是一个类模块,代码如下:

Public Sub Fly()
    ' No code.
End Sub

Public Function GetAltitude() As Long
    ' No code.
End Function

类模块 Airplane 使用 Implements 关键字告诉编译器引发错误,除非它有两个方法:Flyable_Fly() sub 和 Flyable_GetAltitude() 函数返回 Long

Implements Flyable

Public Sub Flyable_Fly()
    Debug.Print "Flying With Jet Engines!"
End Sub

Public Function Flyable_GetAltitude() As Long
    Flyable_GetAltitude = 10000
End Function

第二类模块 Duck 也实现了 Flyable

Implements Flyable

Public Sub Flyable_Fly()
    Debug.Print "Flying With Wings!"
End Sub

Public Function Flyable_GetAltitude() As Long
    Flyable_GetAltitude = 30
End Function

我们可以写一个接受任何 Flyable 值的例程,知道它会响应 FlyGetAltitude 的命令:

Public Sub FlyAndCheckAltitude(F As Flyable)
    F.Fly
    Debug.Print F.GetAltitude
End Sub

由于界面已定义,因此智能感知弹出窗口将显示 FlyFlyGetAltitude

当我们运行以下代码时:

Dim MyDuck As New Duck
Dim MyAirplane As New Airplane

FlyAndCheckAltitude MyDuck
FlyAndCheckAltitude MyAirplane 

输出是:

Flying With Wings!
30
Flying With Jet Engines!
10000

请注意,即使子程序在 AirplaneDuck 中都被命名为 Flyable_Fly,当变量或参数定义为 Flyable 时,它也可以称为 Fly。如果变量专门定义为 Duck,则必须将其称为 Flyable_Fly