ASP的类(class)详解
.ASP的类(class)详解
ASP 本身是不存在类这一概念的,这里所说的类为 ASP 支持的脚本语言 VBScript 中Class。VBScript 中类的功能相对比较简单,不具有真正意义上类的继承、重载等特性,但它仍然是非常有用的。使得程序组成更加合理,降低了编程的复杂度。
1.1、什么是类?
类:对象的蓝图
类是对象的符号表示形式。与蓝图描述构成建筑的项一样,类以同样的方式描述组成对象的属性、方法和事件。就像一副蓝图可以用于建成多座建筑一样,一个类也可以用于根据需要创建多个对象。就像蓝图定义使用建筑的人可以访问建筑的哪些部分一样,类也可以通过封装来控制用户对对象项的访问。
类和对象
“类”和“对象”这两个术语有时互换使用,但实际上,类描述对象的“结构”,而对象是类的可用“实例”。每个实例都是其类的一个精确而又不同的副本。由于对象是类的实例,所以创建对象的操作称为“实例化”。
如果使用蓝图类比,类是蓝图,对象就是基于该蓝图的建筑。通常情况下,更改一个对象中的数据不会更改任何其他对象中的数据。
封装
“封装”是包含和控制对一组关联项的访问的能力。类提供一个最通用的方式来封装项。在下面的示例中,BankAccount 类封装描述银行帐户的方法、字段和属性。
如果没有封装,您就要声明单独的过程和变量来存储和管理银行帐户信息,并且要一次处理多个银行帐户就会比较困难。通过封装,您可以将 BankAccount 类中的数据和过程作为一个单元来使用。您可以同时处理多个银行帐户而不会混淆,因为每个帐户都由该类的一个唯一实例来表示。
封装还使您可以控制如何使用数据和过程。可以使用访问修饰符(如 Private 或 Public )
来防止外部过程执行类方法或读取和修改属性和字段中的数据。您应该将类的内部详细信息声明为 Private 以防止它们在类的外部使用;这种技术被称为“数据隐藏”,是对帐户余额等客户信息的保护方式。
封装的一个基本规则是只能通过 Property 过程或方法来修改或检索类数据。隐藏类的实现详细信息可以防止这些类被以不希望的方式使用,并使您在以后修改这类项时没有兼容性问题方面的风险。例如,BankAccount 类的更高版本可以更改 AccountBalance 字段的数据类型,而不会破坏依赖于此字段拥有特定数据类型的其他应用程序。
1.2、如何创建一个简单的类?
ASP 中创建一个类由 Class 语句声明:
引用内容
Class 语句
声明一个类的名称,以及组成该类的变量、属性和方法的定义。
声明一个类的名称,以及组成该类的变量、属性和方法的定义。
Class name
statements
End Class
statements
End Class
参数
name
必选项。Class 的名称;遵照标准的变量命名约定。
name
必选项。Class 的名称;遵照标准的变量命名约定。
statements
必选项。一个或多个语句,定义了 Class 的变量、属性和方法。
必选项。一个或多个语句,定义了 Class 的变量、属性和方法。
说明
析构方法在 Class 块中,成员通过相应的声明语句被声明为 Private 或 Public。被声明为 Private 的将只在 Class 块内是可见的。被声明为 Public 不仅在 Class 块的内部是可见的,对 Class 块之外的代码也是可见的。没有使用 Private 或 Public 明确声明的被默认为 Public。 在类的块内部被声明为 Public 的过程 (Sub 或 Function)将成为类的方法。Public 变量将成为类的属性,同使用 Property Get、Property Let 和 Property Set 显式声明的属性一样。 类的缺省属
析构方法在 Class 块中,成员通过相应的声明语句被声明为 Private 或 Public。被声明为 Private 的将只在 Class 块内是可见的。被声明为 Public 不仅在 Class 块的内部是可见的,对 Class 块之外的代码也是可见的。没有使用 Private 或 Public 明确声明的被默认为 Public。 在类的块内部被声明为 Public 的过程 (Sub 或 Function)将成为类的方法。Public 变量将成为类的属性,同使用 Property Get、Property Let 和 Property Set 显式声明的属性一样。 类的缺省属
性和方法是在它们的声明部分用 Default 关键字指定的。关于如何使用该关键字,请参考单独的声明语句主题。
示例:一个简单的 ASP Class 代码
Class TestClass
Sub PrintHello()
Response.Write "Hello World!"
End Sub
End Class
Sub PrintHello()
Response.Write "Hello World!"
End Sub
End Class
1.3、如何实例化一个类?
Dim objClass ' 定义一个类引用对象变量
Set objClass = New TestClass ' 创建类引用对象
' 对象名称后加点,再跟成员变量、属性或函数,表示调用该对象的成员变量、属性或函数
' 这里屏幕将显示 Hello World!
objClass.PrintHello
Set objClass = Nothing ' 释放对象
' 对象名称后加点,再跟成员变量、属性或函数,表示调用该对象的成员变量、属性或函数
' 这里屏幕将显示 Hello World!
objClass.PrintHello
Set objClass = Nothing ' 释放对象
ASP 类里不能重载构造函数,所以我们不能使用类似于 Set obj = New TestClass("param") 的语句来创建类。
在 ASP 中使用 Set 语句来创建\销毁类对象,有关 Set 语句的更多信息请参看 VBScript 帮助文档。
1.4、ASP 类事件(构造函数、析构函数)
Initialize 事件
在创建类的实例时发生此事件。
Private Sub Class_Initialize()
语句
End Sub
Private Sub Class_Initialize()
语句
End Sub
当类初始化时,statements部分由零个或多个将要运行的代码语句组成。
Terminate 事件
在所关联的类的实例终止时发生此事件。
Private Sub Class_Terminate()
语句
End Sub
在所关联的类的实例终止时发生此事件。
Private Sub Class_Terminate()
语句
End Sub
当类初始化时,statements 部分由零个或多个将要运行的代码语句组成。
示例:
Class TestClass
' 该函数为构造函数,在使用 Set 创建对象时自动执行
Private Sub Class_Initialize ' 设置 Initialize 事件。
ResPonse.Write("TestClass started")
End Sub
' 该函数为析构函数,在使用 Set 释放对象时自动执行
Private Sub Class_Terminate ' 设置 Terminate 事件。
ResPonse.Write("TestClass terminated")
End Sub
End Class
Private Sub Class_Initialize ' 设置 Initialize 事件。
ResPonse.Write("TestClass started")
End Sub
' 该函数为析构函数,在使用 Set 释放对象时自动执行
Private Sub Class_Terminate ' 设置 Terminate 事件。
ResPonse.Write("TestClass terminated")
End Sub
End Class
Dim objT
Set objT = New TestClass ' 创建一个 TestClass 实例。
Set objT = Nothing ' 删除实例。
Set objT = New TestClass ' 创建一个 TestClass 实例。
Set objT = Nothing ' 删除实例。
执行以上程序屏幕将显示:TestClass started TestClass terminated
1.5、ASP 类成员变量、成员函数
ASP 类中成员变量(函数)有“公有”、“私有”之分,分别使用 Public、Private 语句来定义。
Dim 语句
声明变量并分配存储空间。
Dim varname[([subscripts])][, varname[([subscripts])]] . . .
声明变量并分配存储空间。
Dim varname[([subscripts])][, varname[([subscripts])]] . . .
Public 语句
定义公有变量并分配存储空间。在 Class 块中定义私有变量。
Public varname[([subscripts])][, varname[([subscripts])]] . . .
Private 语句
定义私有变量并分配存储空间。在 Class块中定义私有变量。
Private varname[([subscripts])][, varname[([subscripts])]] . . .
定义私有变量并分配存储空间。在 Class块中定义私有变量。
Private varname[([subscripts])][, varname[([subscripts])]] . . .
参数
varname
变量的名称;遵循标准变量命名约定。
varname
变量的名称;遵循标准变量命名约定。
subscripts
数组变量的维数,最多可以声明 60 维的数组。subscripts 参数使用下列语法:
upper [, upper] . . .
数组的下界总是 0。
数组变量的维数,最多可以声明 60 维的数组。subscripts 参数使用下列语法:
upper [, upper] . . .
数组的下界总是 0。
注意 在过程中使用 Private 语句时,通常将 Private 语句放在过程的开始处。
用 Dim 声明的 Script 级变量可用于脚本中的所有过程,过程级变量只能用于过程中。
Public语句变量可用于全部脚本中的所有过程。
Private 语句变量只能在声明该变量的脚本中使用。
如没有显式指定使用 Public或 Private,则 Function、Sub 过程默认为公用,即它们对于脚本中的所有其他过程是可见的。有关公有、私有的更多信息请参看 VBScript 帮助文档。
Public语句变量可用于全部脚本中的所有过程。
Private 语句变量只能在声明该变量的脚本中使用。
如没有显式指定使用 Public或 Private,则 Function、Sub 过程默认为公用,即它们对于脚本中的所有其他过程是可见的。有关公有、私有的更多信息请参看 VBScript 帮助文档。
示例:公有成员变量、私有成员变量、公有成员函数、私有成员函数
Class TestClass
Dim PublicParam ' 用 Dim 申明公有成员变量
Dim PublicParam ' 用 Dim 申明公有成员变量
Private PrivateParam ' 用 Private 申明私有成员变量
'PublicParam = "公有" ' 不能在 Class 标记以内,类函数以外为成员变量赋值,否则报语法错误
'Const intMax = 5 ' 不能在 Class 标记以内,类函数以外使用 Const,否则报语法错误
'PublicParam = "公有" ' 不能在 Class 标记以内,类函数以外为成员变量赋值,否则报语法错误
'Const intMax = 5 ' 不能在 Class 标记以内,类函数以外使用 Const,否则报语法错误
' 该函数为构造函数,在使用 Set 创建对象时自动执行
Private Sub Class_Initialize ' 设置 Initialize 事件。
' 在这里可以为成员变量赋值
PublicParam = "公有"
PrivateParam = "私有"
End Sub
Private Sub Class_Initialize ' 设置 Initialize 事件。
' 在这里可以为成员变量赋值
PublicParam = "公有"
PrivateParam = "私有"
End Sub
' 该函数为析构函数,在释放对象时自动执行
Private Sub Class_Terminate ' 设置 Terminate 事件。
ResPonse.Write "释放对象"
End Sub
Private Sub Class_Terminate ' 设置 Terminate 事件。
ResPonse.Write "释放对象"
End Sub
'公有成员函数(过程),这里可不写 Public 语句
'成员函数(过程)不需要也不能申明
Public Sub PrintParam(i)
If i = 1 Then
Call PrintPublicParam()
ElseIf i = 2 Then
Call PrintPrivateParam()
End If
End Sub
'私有成员函数(过程),比公有成员函数(过程)多一个 Private 语句
Private Sub PrintPublicParam()
Response.Write PublicParam
End Sub
Private Sub PrintPrivateParam()
Private Sub PrintPublicParam()
Response.Write PublicParam
End Sub
Private Sub PrintPrivateParam()
Response.Write PrivateParam
End Sub
End Sub
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论