VB.Net視頻中所講的物件導向程序設計就是我們常說的面向對象程序設計(OOP),在這一部分的內容中,主要講到了物件和類別的設計。簡單點兒來說,物件就是對象(Object),類別就是類(Class)。類別是創建物件時要定義的類型,物件是類別的具體實體。在物件導向程序設計中,程序需要通過一個個物件來執行的。
物件:物件的生命週期分爲創建、複製和銷燬。
物件的創建:VB.Net和C#都需要使用物件,可兩者創建物件的方式確實不一樣的,比較一下兩者的代碼。
'------VB.Net中創建對象的語法---------'
Dim student As Student '聲明變量,在堆中創建空間
student = New Student() '實例化Student類,在堆中創建student實體
'------也可以寫成如下形式--------------'
Dim student As Student = New Student() '在VB.Net中常用的形式<span style="font-family: KaiTi_GB2312; background-color: rgb(255, 255, 255);"> </span>
//在C#中創建對象的語法
Stduent student=New Student();//直接實例化Student類,創建student實體
物件的複製:.Net平臺提供了IClone接口,通過實現IClone接口,就可以對物件進行復制,語法如下。
物件的銷燬:在VB6.0中通過語句對象進行銷燬,如Set student = Nothing。在.Net中使用資源收集器(GC)來銷燬物件,GC會週期性地自動執行,並回收沒有被參考的物件。當然瞭如果想在程序執行完畢後,立即銷燬物件,VB.Net中也可以手動收回,語法和VB6.0一樣。
類別:類很好的體現了面向對象的三大特性,封裝、繼承和多態。
封裝
類是具有相同屬性、方法和事件的物件的封裝體。一個類的生成同時伴隨着其屬性、方法或事件的生成,這樣定義的類纔有她的價值。
Public Class Student '定義學生類
Dim _name As String '定義學生的屬性,名字和學號
Dim _id As String
Public Property Name() As String '定義屬性所需的關鍵字Property
Get '屬性的兩個函數,Get(讀)和Set(寫)
Return _name
End Get
Set(value As String)
_name = value
End Set
End Property
Public Property ID() As String
Get
Return _id
End Get
Set(value As String)
_id = value
End Set
End Property
End Class
類中的方法是指該類可執行的操作,類的方法可通過Sub過程和Function過程進行聲明,Sub過程和Function過程都是VB.Net中一個獨立的過程,可讀取參數、執行一系列語句並改變其參數的值。兩者的區別是Sub過程不需要返回值,Function過程需要返回值。
Public Function StuAdress() As String '返回值的類型
End Function
Public Sub StuWork() '無需返回值
End Sub
VB6.0和VB.Net聲明類的方法是一樣的,區別在於VB.Net提供了方法重載的機制。VB.Net通過對具有相同名稱的方法設置不同的參數來進行方法重載的。
Public Overloads Sub StuWork(ByVal ID As String) ’方法重載需要用到關鍵字Overloads
End Sub
Public Overloads Sub Stuwork(ByVal Name As String) '方法名一樣,其中的傳遞參數不一樣。
End Sub
事件,應用程序的執行是通過事件驅動的。例如當用戶點擊了窗體中的一個控件時,一個Click事件被觸發了,並且可以調用一個事件處理過程。事件也可以讓一些不相關的過程聯繫在一起。例如,有一個過程需要做很多事情,諸如一系列的操作,用戶可以把一系列的事件組成一個獨立的線程。如果用戶決定要取消一個操作,應用程序可以發出一個cancel事件,來阻止這一系列操作的進行。
繼承
Public Class StudentA '定義學生A,繼承與Student類
Inherits Student '繼承的關鍵字Inherits
Dim _name As String
Dim _id As String
Public Property Name() As String
Get
Return _name
End Get
Set(value As String)
_name = value
End Set
End Property
End Class
多態
Public Overridable Sub StuWork() '關鍵字Overridable表示該方法可以重寫
End Sub
Public Overrides Sub StuWork() '關鍵字Overrides表示對該方法進行重寫
End Sub