日期:2014-05-17  浏览次数:20724 次

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
%>