2、某一类实例的引用时才能访问。上面的比较,同样适用于标准模块和类模块中的公共过程,用下面的例子可以说明。新建一个工程,并在“工程”菜单中个添加一个标准模块和一个类模块,然后运行以下的代码:把下面的代码放在 Class1 中:'下面是 Class1 对象的一个属性。Public Comment As String'下面是 Class1 对象的一个方法。Public Sub ShowComment() MsgBox Comment, , gstrVisibleEverywhereEnd Sub把下面的代码放在 Module1 中:'标准模块
3、中的代码是全局的。Public gstrVisibleEverywhere As StringPublic Sub CallableAnywhere(ByVal c1 As Class1) '下行改变一个全局变量,这是一个Class1实例的(属性) '只有传递给该过程的个别对象才受到影 c1.Comment = "Touched by a global function."End Sub把两个命令按钮放在 Form1 上,并在 Form1 中添加以下的代码:Private mc1First As Class1Private
4、mc1Second As Class1Private Sub Form_Load() '创建两个 Class1 类的实例。 Set mc1First = New Class1 Set mc1Second = New Class1 gstrVisibleEverywhere = "Global string data"End SubPrivate Sub Command1_Click() Call CallableAnywhere(mc1First) mc1First.ShowCommentEnd SubPrivat
5、e Sub Command2_Click() mc1Second.ShowCommentEnd Sub按F5键,运行该工程。当Form1加载时,它创建两个Class1类实例,每个实例有自己的数据。同时,Form1设置了下面全局变量gstrVisibleEverywhere的值。按下Command1,调用全局过程并传递引用给第一个Class1对象。全局过程设置Comment属性,然后Command1调用ShowComment方法显示该对象的数据。正如图1所示,结果信息框演示了全局过程CallableAnywhere如何设置对象的Comm
7、违背了面向对象封装的编程原则,因为由这样的类所创建的对象并没有包含它们的所有数据。静态类数据有时,希望由一个类模块所创建的一些对象共享某个数据项。这就是所谓的静态类数据。不能在VisualBasic类模块中实现真正的静态类数据。但是,通过使用Property过程在标准模块中设置及返回Public数据成员的值,可以仿真静态类数据,如以下的代码:'只读属性返回应用程序的名字。Property Get CommonString() As String '变量 gstrVisibleEverywhere 保存在 '标准模块中,并声明为 P