gpt4 book ai didi

oop - VB6 中的多态行为

转载 作者:行者123 更新时间:2023-12-03 18:15:23 24 4
gpt4 key购买 nike

我最近注意到 VB6 中的 CallByName 关键字。

由于这需要一个对象、过程名称、“调用类型”和参数数组,这可以用来“伪造”某些类型的多态行为吗?

我可以创建 2 个类,A 类和 B 类,每个类都使用相同的方法 Foo,然后执行以下操作:

Dim list As New Collection
Dim instanceA As New ClassA
Dim instanceB As New ClassB
Dim current As Object

Call list.Add(instanceA)
Call list.Add(instanceB)

For Each current in list
Call CallByName(current, "methodName", vbMethod)
Next

以前有人做过吗?问题?可怕的想法还是天才的想法?影响?意想不到的后果?

最佳答案

为什么是假多态性? VB6 以接口(interface)的形式具有真正的多态性:

' Interface1.cls '

Sub Foo()
End Sub

' --------------------------------------------- '

' Class1.cls '
Implements Interface1

Private Sub Interface1_Foo()
? "Hello from class 1"
End Sub

' --------------------------------------------- '

' Class2.cls '
Implements Interface1

Private Sub Interface1_Foo()
? "Hello from class 2"
End Sub

' --------------------------------------------- '

' Module1.mod '

Dim x As Interface1
Set x = New Class1
Call x.Foo()
Set x = New Class2
Call x.Foo()

关于oop - VB6 中的多态行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2581087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com