注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

古城风~~~

竹密无妨溪水过,天高不碍白云飞。这天下总有一份是属于我古城的天地!

 
 
 

日志

 
 

asp学习网:asp 类(class)导读  

2011-01-15 15:18:44|  分类: asp |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

ASP 类比较简单,它不具有真正意义类的继承、重载等特性,尽管如此,它仍然是非常有用的,它降低了我们编程的复杂度,使我们的程序模块更加合理。
asp的类支持以下内容:


公有成员变量、私有成员变量、属性
公有成员函数、私有成员函数
构造函数、析构函数

这部分请查看http://www.aspxuexi.com/class/2006-4-26/asp_class.htm

一个最简单的 ASP 类
class aspxuexi
sub PrintHello()
response.Write "Hello World!"
end sub
end class
可以看出,ASP 类的基本结构是:
class 类名
类代码
end class
使用一个最简单的 ASP 类
dim obj
set obj = new aspxuexi '使用 set new 创建对象,由于不是服务器组件,所以不能用 server.CreateObject 创建
call obj.PrintHello '对象名称后加点,再跟成员变量、属性或函数,表示调用该对象的成员变量、属性或函数,将显示 Hello World! 这里和使用那些内置对象比如application对象是相同的道理.
set obj = nothing '释放对象
ASP 类里不能重载构造函数,所以我们不能使用类似于 set obj = new aspxuexi("subObj") 的语句来创建类。

 

ASP 类成员变量、成员函数、构造析构函数

class aspxuexi

dim publicParam '用 dim 申明公有成员变量
private privateParam '用 private 申明私有成员变量
'publicParam = "公有" 将报错 '不能在 class 标记以内类函数以外为成员变量赋值
'const MAX_LEN = 5 将报错 '不能在 class 标记以内、类函数以外使用 const

'该函数为构造函数,在创建对应的对象时,自动执行
private sub class_initialize()
publicParam = "公有" '可以在类函数中 为成员变量赋值
privateParam = "私有"
end sub

'该函数为析构函数,在使用 set aspxuexiObj= 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 aspxuexi  '自动调用 class_initialize 函数,为 publicParam、privateParam 赋值
obj.publicParam = "新的公有"
'obj.privateParam = "新的私有" '将发生错误,因为 privateParam 是私有变量 不能在class标记之外赋值 
call obj.PrintParam(1) '显示 publicParam 的值
'call obj.PrintPublicParam() '将发生错误,因为 PrintPublicParam 是私有函数 私有函数只能在class内部中调用
set obj = nothing '自动调用 class_terminate 函数,显示“释放对象”

 

ASP类中的属性

class aspxuexi

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 aspxuexi

obj.propName = "asp学习网 www.aspxuexi.com"
response.Write(obj.propName) '输出asp学习网 www.aspxuexi.com

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 = "属性值" 就会出错,因为这时候函数只读

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

在这个例子中,可以看到一个class之间的调用。我们创建一个动物对象的时候,实际发生的事情是产生了一只鸟和一条鱼。

 

来源: http://www.aspxuexi.com/class/2007-4-10/asp_class_basic_0.htm

  评论这张
 
阅读(334)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017