[點晴永久免費OA]ASP類介紹專題
當(dāng)前位置:點晴教程→點晴OA辦公管理信息系統(tǒng)
→『 經(jīng)驗分享&問題答疑 』
嚴(yán)格地說,ASP 并不是一門編程語言,所以不存在類這一概念,我們這里說 ASP 類是指 ASP 的編程語言 VBscript 在 ASP 里應(yīng)用時的類。
ASP 類比較簡單,它不具有真正意義類的繼承、重載等特性,盡管如此,它仍然是非常有用的,它降低了我們編程的復(fù)雜度,使我們的程序模塊更加合理。 ASP 類支持什么 ASP 類比較簡單,它不具有真正意義類的繼承、重載等特性。它支持以下內(nèi)容: 公有成員變量、私有成員變量、屬性 公有成員函數(shù)、私有成員函數(shù) 構(gòu)造函數(shù)、析構(gòu)函數(shù) 創(chuàng)建和使用一個最簡單的 ASP 類 一些初學(xué)者不理解類和對象的區(qū)別,打個比方,類好比是圖紙,對象好比是根據(jù)圖紙制作出的實物。 該示例給出了 ASP 類及對象的簡單示例,該類僅含有一個成員函數(shù),用以解釋類的基本格式,并給出創(chuàng)建、釋放對象的方法。 詳細(xì)內(nèi)容 ASP 類成員變量、成員函數(shù)、構(gòu)造析構(gòu)函數(shù) 這是一個比較完整的類講解,所有的講解都有注釋的方式寫在程序的旁邊。 通過閱讀本節(jié),對 ASP 類有一個較為全面的理解,可以進(jìn)行 ASP 類模塊的開發(fā)。 詳細(xì)內(nèi)容 ASP 類屬性 ASP 類屬性與 ASP 類公有成員變量相比具有以下一些特點。
可以在賦值的同時執(zhí)行其它功能 可以確定賦值范圍 可以將設(shè)定只讀、只寫屬性 所以 ASP 類屬性也是比較常用且重要的。詳細(xì)內(nèi)容 ASP 類組合 ASP 類的功能實在有限,所以有時我們要實現(xiàn)復(fù)雜的功能,只好用組合來實現(xiàn)。 創(chuàng)建一個最簡單的 ASP 類 class CFoo sub PrintHello() response.Write "Hello World!" end sub end class 可以看出,ASP 類的基本結(jié)構(gòu)是: class 類名 類代碼 end class 使用一個最簡單的 ASP 類 dim obj set obj = new CFoo '使用 set new 創(chuàng)建對象,由于不是服務(wù)器組件,所以不能用 server.createObject 創(chuàng)建 call obj.PrintHello '對象名稱后加點,再跟成員變量、屬性或函數(shù),表示調(diào)用該對象的成員變量、屬性或函數(shù),將顯示 Hello World! set obj = nothing '釋放對象 ASP 類里不能重載構(gòu)造函數(shù),所以我們不能使用類似于 set obj = new CFoo("param") 的語句來創(chuàng)建類。 ASP 類的功能實在有限,所以有時我們要實現(xiàn)復(fù)雜的功能,只好用組合來實現(xiàn)。 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 可以看出屬性值相當(dāng)于是在私有成員變量與外界之間架了一座橋梁,使雙方可以互相通信。有人就會問屬性跟公有成員變量一樣,它的存在又有什么獨立的意義呢? 1、可以在賦值的同時執(zhí)行其它功能 如下代碼,相當(dāng)于同時為兩個成員變量賦值 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 執(zhí)行 obj.propName = "個十百千萬億" 將不會為 pvt 賦值成功,因為該字符串的長度超過了 5。 3、可以將設(shè)定只讀、只寫屬性 如上例中,假如我們將 let 函數(shù)去掉,調(diào)用 obj.propName = "屬性值" 就會出錯,因為這時候函數(shù)只可讀。 class CFoo dim publicParam '用 dim 申明公有成員變量 private privateParam '用 private 申明私有成員變量 'publicParam = "公有" '不能在 class 標(biāo)記以內(nèi)、類函數(shù)以外為成員變量賦值 'const MAX_LEN = 5 '不能在 class 標(biāo)記以內(nèi)、類函數(shù)以外使用 const '該函數(shù)為構(gòu)造函數(shù),在使用 set new 創(chuàng)建對象時,自動執(zhí)行 private sub class_initialize() publicParam = "公有" '可以在這里為成員變量賦值 privateParam = "私有" end sub '該函數(shù)為析構(gòu)函數(shù),在使用 set nothing 釋放對象時,自動執(zhí)行 private sub class_terminate() response.Write "釋放對象" end sub '公有成員函數(shù)(過程) '成員函數(shù)(過程)不需要也不能申明 sub PrintParam(index) if index = 1 then call PrintPublicParam() elseif index = 2 then call PrintPrivateParam() end if end sub '私有成員函數(shù)(過程) '只是比公有成員函數(shù)(過程)多一個 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 '自動調(diào)用 class_initialize 函數(shù),為 publicParam、privateParam 賦值 obj.publicParam = "新的公有" obj.privateParam = "新的私有" '將發(fā)生錯誤,因為 privateParam 是私有變量 call obj.PrintParam(1) '顯示 publicParam 的值 call obj.PrintPublicParam() '將發(fā)生錯誤,因為 PrintPublicParam 是私有函數(shù) set obj = nothing '自動調(diào)用 class_terminate 函數(shù),顯示“釋放對象” 該文章在 2022/7/5 1:01:10 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |