【发布时间】:2010-09-28 14:36:45
【问题描述】:
我想知道是否可以在 VBA 中创建类方法。类方法是指可以在没有类对象的情况下调用的方法。 'static' 关键字在 C++ 和 Java 中可以做到这一点。
在下面的示例中,我尝试创建一个静态工厂方法。
例子:
'Classmodule Person'
Option Explicit
Private m_name As String
Public Property Let name(name As String)
m_name = name
End Property
Public Function sayHello() As String
Debug.Print "Hi, I am " & m_name & "!"
End Function
'---How to make the following method static?---'
Public Function Create(name As String) As Person
Dim p As New Person
p.m_name = name
Set Create = p
End Function
'Using Person'
Dim p As New Person
p.name = "Bob"
p.sayHello 'Works as expected'
Set p2 = Person.Create("Bob") 'Yields an error'
【问题讨论】:
-
这并没有涵盖这个问题的重点,即类方法,但是类方法的大多数用途不会被返回到 person 类的另一个实例的方法所涵盖?例如在模块中,您将拥有: Dim person As new Person: Set person = person.Create("Bob")。类中的 Create 方法如下: Public Function Create(name As String) As Person: Dim p As Person: Set p = New Person: p.name = name: Set create = p: End Function。 IE。一旦你初始化了一个类的“处理程序”实例,它就可以用来返回它自己的类的其他实例。
-
@Cor_Blimey:你描述的技术肯定会奏效。然而,问题的关键在于不需要“处理程序”实例。