class,function,sub的应用与区别
用ASP已经有一段时间了,不过还是初级水平,希望好心人指点,说说class,function,sub三者的应用情况与使用区别。
1.function与sub
function与sub的最大区别就是function有返回值,而sub没有,但我总觉得应该还有其他的区别,不然要SUB做什么?另外请列举一些应用的情况。
2.class
对与class我没有使用过,平时经常用function与sub,所以我对class比较迷。
什么情况下使用class,为什么要使用class,为什么不用function与sub,使用class有什么好处?
3.下面的这个例子我对 "初始化类 "有一点点的疑问,Class_Initialize是个默认的用于初始化类的过程名称吗?要不然在哪里调用过Class_Initialize呢?没有调用的话,又是怎样 "初始化类 "的?
<%
'声明一个名为aspcn的类
Class aspcn
Private aspcn
'初始化类
Private Sub Class_Initialize
aspcn= "Aspcn Is Good! <br> "
End Sub
'定义一个函数
Public Function DoIt()
DoIt=aspcn
End Function
'定义一个方法
Public Sub QueryStr(stat)
Response.write stat
End Sub
End Class
Set Hi_aspcn=New aspcn '定义一个名为Hi_aspcn的aspcn对象实例
response.write Hi_aspcn.DoIt
varstr= "Aspcn Is Cool! <br> <font color=red> http://www.aspcn.com </font> <br> WelCome!!! "
Hi_aspcn.QueryStr varstr
%>
说明:
在 Class 块中,成员通过相应的声明语句被声明为 Private 或 Public。被声明为 Private 的将只在 Class 块内是可见的。被声明为 Public 不仅在 Class 块的内部是可见的,对 Class 块之外的代码也是可见的。没有使用 Private 或 Public 明确声明的被默认为 Public。在类的块内部被声明为 Public 的过程(Sub 或 Function)将成为类的方法。Public 变量将成为类的属性,同使用 Property Get、Property Let 和 Property Set 显式声明的属性一样。类的缺省属性和方法是在它们的声明部分用 Default 关键字指定的。关于如何使用该关键字,请参考单独的声明语句主题。
------解决方案--------------------1 我和atmo想法一样,感觉sub比无返回的function效率要高,所以有返回才function,否则sub。
2 其实什么时候用class和sub/function是一样,什么时候用sub/function知道吧,就是很多语句块是一样的时候为了减少代码提高效率而把相同的语句封装起来,不同的是sub/function封装的是语句,而class封装的是sub/function。
3 Class_Initialize不是指靠这个来初始化类,而是说当类初始化时就调用这个过程,对应的还有Class_Terminate,看这个例子就明白:
<%
Class ATHENA112
Private Sub Class_Initialize
response.write( " <script> alert( '1 '); </script> ")
End Sub
Private Sub Class_Terminate
response.write( " <script> alert( '3 '); </script> ")
End Sub
End Class
Set csdn = New ATHENA112
response.write( " <script> alert( '2 '); </script> ")
Set csdn = nothing
%>