【正文】
第 4章 本章要點: ? 類的創(chuàng)建與使用 ? 類的繼承 ? 委托與事件 類 ? ,它提供了類繼承機制、構(gòu)造函數(shù)、析構(gòu)函數(shù)、重載等面向?qū)ο筇匦浴? 類定義 ? 在面向?qū)ο蟪绦蛟O(shè)計中,類被作為一種數(shù)據(jù)結(jié)構(gòu),是數(shù)據(jù)和對數(shù)據(jù)操作的集合體。是生產(chǎn)實例對象的模板,是對同一類對象的抽象。其語法格式為: ? 類修飾符 Class 類名 ? 類體 ? End Class ? 其中,關(guān)鍵字 Class、類名、 End Class和類體是必須項,其他項是可選項。類修飾符見表 41。類體用于定義類的成員,成員可以是變量、屬性、方法和事件。 類修飾符 說明 Public 公有訪問權(quán)限,不受限制 Protected 保護訪問權(quán)限,僅在其類體內(nèi)或派生類中被訪問到 Private 私有訪問權(quán)限,僅在類體內(nèi)可被訪問到 Friend 友元訪問權(quán)限,只有在包含此實體聲明的程序內(nèi)才是可訪問的 ProtectedFriend 同時具有 Protected和 Friend訪問權(quán)限 Shadows 表明此類隱藏基類中的同名元素 MustInherit 不能創(chuàng)建此類的實例,只能從此類派生類 NotInheritable 該類不能被繼承 表 41 類修飾符 動手做: Public Class Employee Private name As String Private age As Integer Private salary As Single Public Sub New(ByVal n As String, ByVal a As Integer, ByVal s As Single) name = n age = a salary = s End Sub Public Function GetName() Return name End Function End Class [例 41]()定義一個雇員 Employee 構(gòu)造函數(shù)和析構(gòu)函數(shù) – 構(gòu)造函數(shù)完成對象的初始化工作。其語法格式為: – Sub New(參數(shù)) – 語句 – End Sub – 它是類中首先運行的代碼,它只在對象創(chuàng)建時運行一次。如果沒有為類顯式定義構(gòu)造函數(shù),則 Visual Basic .NET 會在運行時隱式創(chuàng)建一個構(gòu)造函數(shù)。 – 析構(gòu)函數(shù)主要用于釋放類實例,在銷毀對象時使用。其語法格式為: – Sub Finalize() – 語句 – End Sub – 當(dāng)銷毀對象時系統(tǒng)自動調(diào)用 Finalize,該方法主要完成在對象銷毀前需要完成的工作。 ? %@page LANGUAGE = vb% ? script language=vb runat =server ? public class Complex ? private imag, real as double ? public message as String ? public Sub New() ? message = New... ? imag = 0 ? real = 0 ? end sub ? public sub New(byval r as double, byval i as double) ? message = New(r,i)... ? imag = i ? real = r ? End sub ? end class [例 42]()使用構(gòu)造函數(shù) ? /script ? HTML ? HEAD ? titleTest Class/title ? /HEAD ? BODY ? TABLE width=100% bordercolor=blue border=1 ? TR height=25 bgcolor=blue ? TD align=centerfont color=white程序輸出結(jié)果/font/TD/TR ? TR bgcolor=whiteTD ? % ? dim c as new plex() ? () ? dim cc as new plex(10,20) ? () ? % ? /TD ? /TR ? /TABLE ? /BODY ? /HTML 程序輸出結(jié)果如圖 41所示: ? 點評: 程序中,定義了一個復(fù)數(shù)類 plex。在類中,聲明了兩個字段 imag和 real,用于表示復(fù)數(shù)的實部和虛部。同時,聲明了兩個不同的構(gòu)造函數(shù),一個給兩個字段賦初值為 0,一個給兩個字段賦初值為特定值。 創(chuàng)建和初始化對象 –定義了類之后,就可以通過 new關(guān)鍵字來創(chuàng)建類實例,類實例是一個引用類型的變量。類實例創(chuàng)建的格式為: – Dim 實例名 As New 類名(參數(shù)) –建立一個類實例,并使用類的構(gòu)造函數(shù)初始化類實例。例如: –Dim p As New Employee(“l(fā)i”, 23, 2020) –也可以先聲明對象,然后再實例和初始化。例如: – Dim p As Employee –p = new Employee(“l(fā)i”, 23, 2020) 字段與屬性 1. 字段 字段表示與對象或類相關(guān)聯(lián)的變量。原則上,字段應(yīng)該作為類的私有成員,用于封裝類的數(shù)據(jù)。例如: Class Point Dim x As Integer Dim y As Integer Public Sub New(ByVal a As Integer, ByVal b As Integer) x = a y = b End Sub End Class 在 Point類中添加兩個字段 x和 y,用于封裝 Point類的 x和 y坐標(biāo)。 2. 屬性 屬性用于刻畫對象的特征或表示對象的狀態(tài),它提供對類或?qū)ο笮再|(zhì)的訪問。比如窗口標(biāo)題、窗口位置、客戶名稱等,都可以作為屬性。屬性和字段都能在對象中存儲信息,但屬性與字段不同,屬性使用屬性過程控制如何設(shè)置或返回值,而字段只是公共變量。 屬性過程是在屬性定義中聲明的代碼塊,這些屬性過程指定在屬性值被讀取或?qū)懭霑r需執(zhí)行的語句。因此屬性提供了一種機制,它把讀取和寫入對象的某些特性與一些操作關(guān)聯(lián)起來。甚至,它們還可以對此類特性進行計算。 Visual Basic .NET 有兩種類型的屬性過程:Get 屬性過程用于檢索屬性值; Set 屬性過程用于向?qū)傩再x值。 屬性聲明的語法形式: 屬性修飾符 Property 屬性名(參數(shù)列表) As 數(shù)據(jù)類型 Get 語句 End