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
参数
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 关键字指定的。关于如何使用该关键字,请参考单独的声明语句主题。
 
示例:一个简单的 ASP Class 代码
Class TestClass 
    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 ' 释放对象

ASP 类里不能重载构造函数,所以我们不能使用类似于 Set obj = New TestClass("param") 的语句来创建类。
在 ASP 中使用 Set 语句来创建\销毁类对象,有关 Set 语句的更多信息请参看 VBScript 帮助文档。
 
1.4、ASP 类事件(构造函数、析构函数)
Initialize 事件
在创建类的实例时发生此事件。
Private Sub Class_Initialize()
    语句
End Sub
当类初始化时,statements部分由零个或多个将要运行的代码语句组成。
 Terminate 事件
在所关联的类的实例终止时发生此事件。
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
Dim objT
Set objT = New TestClass ' 创建一个 TestClass 实例。
Set objT = Nothing ' 删除实例。
 执行以上程序屏幕将显示:TestClass started TestClass terminated
 1.5、ASP 类成员变量、成员函数
ASP 类中成员变量(函数)有“公有”、“私有”之分,分别使用 Public、Private 语句来定义。
Dim 语句
声明变量并分配存储空间。
Dim varname[([subscripts])][, varname[([subscripts])]] . . .

Public 语句
定义公有变量并分配存储空间。在 Class 块中定义私有变量。
Public varname[([subscripts])][, varname[([subscripts])]] . . .
Private 语句
定义私有变量并分配存储空间。在 Class块中定义私有变量。
Private varname[([subscripts])][, varname[([subscripts])]] . . .
参数
varname
变量的名称;遵循标准变量命名约定。
subscripts
数组变量的维数,最多可以声明 60 维的数组。subscripts 参数使用下列语法:
upper [, upper] . . .
数组的下界总是 0。
注意 在过程中使用 Private 语句时,通常将 Private 语句放在过程的开始处。
用 Dim 声明的 Script 级变量可用于脚本中的所有过程,过程级变量只能用于过程中。
Public语句变量可用于全部脚本中的所有过程。
Private 语句变量只能在声明该变量的脚本中使用。
如没有显式指定使用 Public或 Private,则 Function、Sub 过程默认为公用,即它们对于脚本中的所有其他过程是可见的。有关公有、私有的更多信息请参看 VBScript 帮助文档。
 示例:公有成员变量、私有成员变量、公有成员函数、私有成员函数
Class TestClass
    Dim PublicParam ' 用 Dim 申明公有成员变量
    Private PrivateParam ' 用 Private 申明私有成员变量
    'PublicParam = "公有" ' 不能在 Class 标记以内,类函数以外为成员变量赋值,否则报语法错误
    'Const intMax = 5 ' 不能在 Class 标记以内,类函数以外使用 Const,否则报语法错误
  ' 该函数为构造函数,在使用 Set 创建对象时自动执行
 Private Sub Class_Initialize ' 设置 Initialize 事件。
        ' 在这里可以为成员变量赋值
        PublicParam = "公有"
        PrivateParam = "私有"
 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()
        Response.Write PrivateParam
    End Sub

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。