ASP中类Class相关内容的整理资料


Class 对象
使用 Class 语句创建的对象 。提供了对类的各种事件的访问 。

说明

不允许显式地将一个变量声明为 Class 类型 。在 VBScript 的上下文中,“类对象”一词指的是用 VBScript Class 语句定义的任何对象 。

在使用 Class 语句建立了类定义之后,可以用下面的形式创建类的一个实例:

Dim X
Set X = New classname
由于 VBScript 是一种后期约束型语言,下面的做法是不允许的:

Dim X as New classname
-或- 

Dim X
X = New classname
-或- 

Set X = New Scripting.FileSystemObject

Class 对象的事件
Class 对象提供对类的事件的访问 。

Initialize 事件
在创建类的实例时发生此事件 。

Private Sub Class_Initialize()
 语句
End Sub
当类初始化时,statements部分由零个或多个将要运行的代码语句组成 。

说明
下面的例子演示了 Initialize 事件的用法 。

Class TestClass
 Private Sub Class_Initialize  设置 Initialize 事件 。
 MsgBox("TestClass started")
 End Sub
 Private Sub Class_Terminate  设置 Terminate 事件 。
 MsgBox("TestClass terminated")
 End Sub
End Class

Set X = New TestClass  创建一个 TestClass 实例 。
Set X = Nothing  删除实例 。

Terminate 事件

在所关联的类的实例终止时发生此事件 。

Private Sub Class_Terminate()
 语句
End Sub
当类初始化时,statements 部分由零个或多个将要运行的代码语句组成 。

说明
下面的例子演示了 Terminate 事件的用法 。

Class TestClass
 Private Sub Class_Initialize  设置 Initialize 事件 。
 MsgBox("TestClass started")
 End Sub
 Private Sub Class_Terminate  设置 Terminate 事件 。
 MsgBox("TestClass terminated")
 End Sub
End Class
Set X = New TestClass  创建一个 TestClass 实例 。
Set X = Nothing  删除实例 。

Class 语句
声明一个类的名称,以及组成该类的变量、属性和方法的定义 。
Class name
 statements
End Class 
参数
name  必选项 。Class 的名称;遵照标准的变量命名规则 。 
statements  必选项 。一个或多个语句,定义了 Class 的变量、属性和方法 。 

说明
在 Class 块中,成员通过相应的声明语句被声明为 Private 或 Public 。被声明为 Private 的将只在 Class 块内是可见的 。被声明为 Public 不仅在 Class 块的内部是可见的,对 Class 块之外的代码也是可见的 。没有使用 Private 或 Public 明确声明的被默认为 Public 。
在类的块内部被声明为 Public 的过程(Sub 或 Function)将成为类的方法 。Public 变量将成为类的属性,同使用 Property Get、Property Let 和 Property Set 显式声明的属性一样 。类的缺省属性和方法是在它们的声明部分用 Default 关键字指定的 。关于如何使用该关键字,请参考单独的声明语句主题 。

Property Get 语句
在 Class 块中,声明构成用来取得(返回)属性值的 Property 过程的主体的名称、参数和代码 。
 [Public [Default]| Private] Property Get name [(arglist)]
 [statements]
 [[Set] name = expression]
 [Exit Property] 
 [statements]
 [[Set] name = expression]
End Property
参数
Public  表明Property Get 过程可以被所有脚本中的其他过程访问 。 
Default  只与 Public 关键字一起使用,表明 Property Get 过程中定义的属性为类的缺省属性 。 
Private  表明 Property Get 过程只对定义它的 Class 块中的其他过程是可以访问的 。 
name  Property Get 过程的名称;遵守标准的变量命名规则,区别仅仅在于它可以与同一Class块中的Property Let 或 Property Set过程 。 
arglist  该变量列表代表了 Property Get 过程被调用时传递给它的参数 。多个参数之间用逗号分隔开 。Property Get 过程中的每个参数的名称必须与 Property Let 过程中的相应参数相同(如果有的话) 。 
statements 
 任意的一组语句,将在 Property Get 过程的主体中执行 。 
Set 
 在将对象作为 Property Get 过程的返回值时使用的关键字 。 
expression  Property Get 过程的返回值 。 

说明
如果未使用 Public 或 Private 明确声明,则 Property Get 过程被缺省为公有的,即它们对于脚本中的其他所有过程都是可见的 。Property Get过程中的局部变量的值在不同的过程调用之间是不保存的 。

在其他任何过程(例如 Function 或 Property Let) 内部都不能定义 Property Get 过程 。

Exit Property 语句将导致立即从 Property Get 过程中退出 。程序将继续执行调用 Property Get 过程的语句之后的程序 。Exit Property 语句可以出现在 Property Get 过程中的任何位置,次数不限 。

与Sub 和 Property Let 过程类似,Property Get 过程是能够接受参数的过程,可以执行一系列的语句,以及改变参数的值 。然而,与Sub 和 Property Let 不同的是,Property Get 过程可以被用于表达式的右侧,用与使用Function 或属性名称相同的方式来返回属性的值 。

要求
版本 5

Property Let 语句
在 Class 块中,声明名称、参数和代码等,它们构成了设置属性值的 Property 过程的主体 。
 [Public | Private] Property Let name (
 [arglist,] value
)
 [statement]
 [Exit Property] 
 [statement]
End Property 
参数
Public  表明 Property Let 过程可以被所有脚本中的其他所有过程访问 。 
Private 表明 Property Let 过程只能被定义之的 Class 块内的其他过程访问 。 
name  Property Let 过程的名称;遵守标准的变量命名规则,区别仅仅在于其名称可以与相同 Class 块中的 Property Get 或 Property Set 过程相同 。 
arglist 该变量列表代表了在调用时被传递到 Property Let 过程的参数 。多个参数之间用逗号隔开 。Property Let 过程的每个参数的名字必须与 Property Get 过程中的相应参数相同 。此外, Property Let 过程的参数比相应的 Property Get 过程总要多一个 。该参数为被赋予属性的值 。 
value 该变量中包含要赋予属性的值 。当过程被调用时,该参数将出现在调用表达式的右侧 。 
statement 任意的一组语句,将在 Property Let 过程的主体内执行 。 

说明
如果未明确地使用 Public 或 Private 进行指定,Property Let 过程被缺省设置为公有的,即它们对于脚本内的其他所有过程都是可见的 。Property Let过程中的局部变量的值在不同的过程调用之间是不被保存的 。

在其他任何过程(例如 Function 或 Property Get)的内部不能够定义 Property Let 过程 。

Exit Property 语句将导致立即从 Property Let 过程中退出 。程序将从调用 Property Let 过程的语句之后的点继续执行 。Exit Property 语句可以出现在 Property Let 过程中的任何位置,次数不限 。

注意 每个 Property Let 语句必须为所定义的过程至少定义一个参数 。该参数(在存在多个参数时的最后一个参数)包含了当 Property Let 语句被调用时要赋予属性的值 。该参数在前面的语法中称为value 。
与 Function 和 Property Get 过程类似,Property Let 过程是一个单独的过程,它可以接受参数,执行一系列的语句,还可以改变参数的值 。不过,与Function 和 Property Get 过程不同的是,它们两者都返回一个值,而Property Let过程只能用于属性赋值表达式的左侧 。

要求
版本 5

Property Set 语句
在 Class 块中,声明名称、参数和代码,这些构成了将引用设置到对象的 Property 过程的主体 。
 [Public | Private] Property Set name(
 [arglist,] reference
)
 [statement]
 [Exit Property] 
 [statement]
End Property

参数
Public 
表明 Property Set 过程可以被所有脚本中的其他所有过程访问 。 
Private 
表明 Property Set 过程只能被声明之的同一 Class 块中的其他过程访问 。 
name 
Property Set 过程的名称;遵守标准的变量命名规则,不过该名称可以与同一个 Class 块中的 Property Get 或 Property Let 过程相同 。 
arglist 
变量列表,代表在 Property Set 过程被调用时传递给它的参数 。多个参数之间用逗号分隔开 。此外,Property Set 过程将总是比它相应的 Property Get 过程多一个参数 。这个多出来的参数是被赋予属性的对象 。 
reference 
变量,其中包含被用于对象引用赋值的右侧的对象引用 。 
statement 
将要在 Property Set 过程主体中执行的任何一组语句 。

说明
除非使用 Public 或 Private 明确地进行指定,否则 Property Set 过程被设置为缺省的公有模式,即脚本中的其他所有过程都是可见的 。在不同的过程调用时,Property Set 过程中的局部变量是不保存的 。

在其他任何过程(例如Function或Property Let)中都不能够定义Property Set过程 。

Exit Property 语句将导致立即从 Property Set 过程中退出 。程序将继续执行调用 Property Set 过程之后的语句 。Exit Property 语句的数量不受限制,可以出现在 Property Set 过程中的任何位置 。

注意 每个 Property Set 语句都必须为所定义的过程至少定义一个参数 。当 Property Set 语句所定义的过程被调用时,该参数(在多个参数时为最后一个参数)将为属性提供实际的对象引用 。在前面的语法中,该参数称为引用 。
与 Function 和 Property Get 过程类似,Property Set 过程是一个单独的过程,它可以有若干参数,执行一系列的语句,还可以改变参数的值 。然而,与 Function 和 Property Get 过程不同的是,函数和过程都可以返回值,而 Property Set 过程对象引用赋值(Set 语句)的左侧 。

要求
版本 5

Public 语句
定义公有变量并分配存储空间 。在 Class 块中定义私有变量 。
Public varname[([subscripts])][, varname[([subscripts])]] . . .
参数
varname 
变量的名称,遵循标准变量命名规则 。 
subscripts 
数组变量的维数;最多可以声明 60 维的数组 。subscripts 参数使用下列语法: 
upper [,upper] . . . 

数组的下界总是 0 。 

说明
Public 语句变量可用于全部脚本中的所有过程 。

在使用引用对象的变量之前,必须用 Set 语句将某个已有对象赋予该变量 。在赋值之前,所声明的对象变量被初始化为 Empty 。

也可用带空圆括号的 Public 语句来声明动态数组 。声明动态数组后,可在过程内使用 ReDim 语句来定义该数组的维数和元素 。如果试图重新声明数组变量的维数,且此数组变量的大小已在 Private、Public 或 Dim 语句中显式地指定,则会发生错误 。

下面例子举例说明如何使用 Public 语句: 
Public MyNumber  公用 Variant 变量 。
Public MyArray(9)  公用数组变量 。
  Variant 变量的多个公用声明 。
Public MyNumber, MyVar, YourNumber

Private 语句
定义私有变量并分配存储空间 。在 Class块中定义私有变量 。
Private varname[([subscripts])][, varname[([subscripts])]] . . .
参数
varname 
变量的名称;遵循标准变量命名规则 。 
subscripts 
数组变量的维数,最多可以声明 60 维的数组 。subscripts 参数使用下列语法: 
upper [, upper] . . . 

数组的下界总是 0 。 

说明
Private 语句变量只能在声明该变量的脚本中使用 。

在使用引用对象的变量之前,必须用 Set 语句将某个现有对象赋予此变量 。在赋值之前,所声明的对象变量被初始化Empty 。

也可用带空圆括号的 Private 语句声明动态数组 。声明动态数组后,可在过程内使用 ReDim 语句定义该数组的维数和元素 。如果在 Private、Public 或 Dim 语句中已显式指定数组大小,却试图重新声明数组维数,就会发生错误 。

注意 在过程中使用 Private 语句时,通常将 Private 语句放在过程的开始处 。
下面例子举例说明如何使用 Private 语句: 
Private MyNumber  私有 Variant 变量 。
Private MyArray(9)  私有数组变量 。
  Variant 变量的多个私有声明 。
Private MyNumber, MyVar, YourNumber