网络编程
位置:首页>> 网络编程>> Asp编程>> 关于ASP中的类class

关于ASP中的类class

作者:CNLei 来源:CNLei 发布时间:2007-08-19 15:37:00 

标签:类,class,ASP

内容摘要:严格地说,ASP 并不是一门编程语言,所以不存在类这一概念,我们这里说 ASP 类是指 ASP 的编程语言VBScript 在 ASP 里应用时的类。ASP 类比较简单,它不具有真正意义类的继承、重载等特性,尽管如此,它仍然是非常有用的,它降低了我们编程的复杂度,使我们的程序模块更加合理。

ASP 类支持什么
ASP 类比较简单,它不具有真正意义类的继承、重载等特性。它支持以下内容:
公有成员变量、私有成员变量、属性
公有成员函数、私有成员函数
构造函数、析构函数

一些初学者不理解类和对象的区别,打个比方,类好比是图纸,对象好比是根据图纸制作出的实物。 该示例给出了 ASP 类及对象的简单示例,该类仅含有一个成员函数,用以解释类的基本格式,并给出创建、释放对象的方法。 详细内容 ASP 类成员变量、成员函数、构造析构函数 这是一个比较完整的类讲解,所有的讲解都有注释的方式写在程序的旁边。 通过阅读本节,对 ASP 类有一个较为全面的理解,可以进行 ASP 类模块的开发。 详细内容 ASP 类属性 ASP 类属性与 ASP 类公有成员变量相比具有以下一些特点:

可以在赋值的同时执行其它功能
可以确定赋值范围
可以将设定只读、只写属性

所以 ASP 类属性也是比较常用且重要的。 详细内容 ASP 类组合 ASP 类的功能实在有限,所以有时我们要实现复杂的功能,只好用组合来实现。

创建一个最简单的 ASP 类:




class CFoo  
 sub PrintHello()  
 response.Write "Hello World!"  
 end sub  
end class 



可以看出,ASP 类的基本结构是:
class 类名
 类代码
end class

使用一个最简单的 ASP 类例子

dim obj
set obj = new CFoo '使用 set new 创建对象,由于不是服务器组件,所以不能用


server.CreateObject 创建
call obj.PrintHello '对象名称后加点,再跟成员变量、属性或函数,表示调用该对象的成员变量、属性或函数,将显示 Hello World!
set obj = nothing '释放对象

ASP 类里不能重载构造函数,所以我们不能使用类似于 set obj = new CFoo("param") 的语句来创建类。

ASP 类的功能实在有限,所以有时我们要实现复杂的功能,只好用组合来实现。


class CFish  
 sub Swim()  
 end sub  
end class  
class CBird  
 sub Fly()  
 end sub  
end class  
class CAnimal  
 dim fish  
 dim bird  
 private sub class_initialize()  
 set fish = new CFish  
 set bird = new CBird  
 end sub  
 private sub class_terminate()  
 set fish = nothing  
 set bird = nothing  
 end sub  
end class  
dim animal  
set animal = new CAnimal  
call animal.fish.Swim() ’鱼游  
call animal.bird.Fly() ’鸟飞  
set animal = nothing 
ASP 类属性 
class CFoo  
 private pvt  
 ’属性写  
 public property let propName(v)  
 pvt = v  
 end property  
 ’属性读  
 public property get propName()  
 PropName = pvt  
 end property  
end class  
dim obj  
set obj = new CFoo  
obj.propName = "属性值"  
response.Write(obj.propName) ’显示“属性值”  
set obj = nothing 


可以看出属性值相当于是在私有成员变量与外界之间架了一座桥梁,使双方可以互相通信。
有人就会问属性跟公有成员变量一样,它的存在又有什么独立的意义呢?
1、可以在赋值的同时执行其它功能
如下代码,相当于同时为两个成员变量赋值 

 public property let propName(v) 
 pvt = v 
 另一个私有成员变量名 = "pvt 的值:" & v 
 end property


2、可以确定赋值范围
假如上例中的属性写改为如下:



 public property let propName(v)  
 if Len(v) <= 5 then  
 pvt = v  
 end if  
 end property 

执行 obj.propName = "个十百千万亿" 将不会为 pvt 赋值成功,因为该字符串的长度超过了 5。
3、可以将设定只读、只写属性
如上例中,假如我们将 let 函数去掉,调用 obj.propName = "属性值" 就会出错,因为这时候函数只可读。



class CFoo  
 dim publicParam ’用 dim 申明公有成员变量  
 private privateParam ’用 private 申明私有成员变量  
 ’publicParam = "公有" ’不能在 class 标记以内、类函数以外为成员变量赋值  
 ’const MAX_LEN = 5 ’不能在 class 标记以内、类函数以外使用 const  
 ’该函数为构造函数,在使用 set new 创建对象时,自动执行  
 private sub class_initialize()  
 publicParam = "公有" ’可以在这里为成员变量赋值  
 privateParam = "私有"  
 end sub  
 ’该函数为析构函数,在使用 set nothing 释放对象时,自动执行  
 private sub class_terminate()  
 response.Write "释放对象"  
 end sub  
 ’公有成员函数(过程)  
 ’成员函数(过程)不需要也不能申明  
 sub PrintParam(index)  
 if index = 1 then  
 call PrintPublicParam()  
 elseif index = 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  
end class  
dim obj  
set obj = new CFoo ’自动调用 class_initialize 函数,为 publicParam、privateParam 赋值  
obj.publicParam = "新的公有"  
obj.privateParam = "新的私有" ’将发生错误,因为 privateParam 是私有变量  
call obj.PrintParam(1) ’显示 publicParam 的值  
call obj.PrintPublicParam() ’将发生错误,因为 PrintPublicParam 是私有函数  
set obj = nothing ’自动调用 class_terminate 函数,显示“释放对象”


0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com