国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > ASP > 正文

ASP 類專題

2020-07-27 13:29:54
字體:
來源:轉載
供稿:網友
嚴格地說,ASP 并不是一門編程語言,所以不存在類這一概念,我們這里說 ASP 類是指 ASP 的編程語言 VBScript 在 ASP 里應用時的類。
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 函數,顯示“釋放對象”
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 郸城县| 禄劝| 余姚市| 日喀则市| 尤溪县| 曲沃县| 微博| 淮南市| 平原县| 会宁县| 吉安市| 紫金县| 赫章县| 北安市| 平南县| 东源县| 通州市| 襄汾县| 五寨县| 崇信县| 龙江县| 藁城市| 开阳县| 大丰市| 濮阳县| 伊宁市| 萝北县| 云霄县| 五常市| 南靖县| 高安市| 东港市| 普兰店市| 万源市| 元朗区| 凤庆县| 平和县| 武城县| 梓潼县| 新源县| 花莲市|