关于ASP中的类class
作者:CNLei 来源:CNLei 发布时间:2007-08-19 15:37:00
内容摘要:严格地说,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 函数,显示“释放对象”


猜你喜欢
- 当大家发现数据库查询性能很慢的时候,大家都会想到加索引来优化数据库查询性能,但是面对一个复杂的SQL语句,找到一个优化的索引组合对人脑来讲,
- 一、建造者模式建造者模式,顾名思义类似于建筑工人,他们按照有条理的施工顺序(e.g. 打桩 => 浇筑框架 => 砌墙 =>
- 开篇先明义:lambda是表达式,而def函数是语句代码块所以lambda其实就是一个稍微高级一点的式子而已,只不过这个式子比较长,而且还会
- 有好一段时间没有学习新东西了,过了个十月一感觉事情还是越早做越好,废话不多说了,说一下用mybatis连接MySQL数据库,上一篇写了jdb
- 当在函数中定义默认值时,值初始化只会进行一次,就是执行到def methodname时执行。看下面代码:from datetime impo
- BLOG地址:http://www.planabc.net/article.asp?id=107学习标准的朋友,一般都会在学习的过程中接触到
- 在实际工作中,有时候需要对判断字符串是否为合法的json格式解决方法使用json.loads,这样更加符合‘Pythonic'写法代
- 使用MySql的窗口函数统计数据时,发现一个小的问题,与大家一起探讨下。环境配置:mysql-installer-community-8.0
- 平时工作过程中,git在push代码的时候有时会遇到如下的错误错误原因文件冲突,本地的代码和远程Repository中的文件个数不一致(即远
- up.htm'::::::: 此程序属扬子原创 ::::::::::::::::::':::::: 在sql2000,200
- 代码如下:Select * from T_Employee select FName,FAge from T_Employee select
- 本文实例讲述了Python3.5变量、数据结构、条件和循环语句、break与continue语句。分享给大家供大家参考,具体如下:1、变量:
- 本文实例讲述了python实现域名系统(DNS)正向查询的方法。分享给大家供大家参考,具体如下:域名系统(DNS)是一个分布式的数据库,主要
- 很多网友在浏览网页时应该会发现很多网页有显示时间和日期的功能,这个不难,使用可视化网页制作软件Drea
- 索引是什么索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结
- 如何用ASP发送带附件的邮件?请问如何用CDONTS组件发送带附件的邮件? 见下列代码:<%&nb
- MySQL 数据(字段)类型在创建表的时候,要明确定义字段对应的数据类型。MySQL 主要的数据类型分为数值类型、字符串(文本)类型、时间日
- 可以把本功能写成一个函数,函数的处理过程描述如下:首先调用adodb.connection对象中的openSchema函数,这样会得到一个R
- 本文实例讲述了微信小程序picker组件简单用法。分享给大家供大家参考,具体如下:picker滚动选择器,现支持三种选择器,通过mode来区
- 在写脚本的过程中,除了发送form表单参数之外,我们还会发送json格式的参数。那么碰见json格式要怎么发送呢,这篇我们来解决这个问题。直