- Class
Class是用來封裝功能程式碼的邏輯單位。
- 建立Class的Instance
dim MyObject as New OOP
- MyObject是你所要建立的Instance
- New關鍵字,指定要建立的Class名稱
流程:
- 配置RAM空間給MyObject
- 建立一個OOP的Object(物件的實體)
- 將MyObject參考物件實體所在位置的RAM Address
在我學習物件導向的過程裡,Class→Object(Instance)想了很久才想通,一般都是用車子之類當例子,但我想用自身實例最有感覺,我的第二個小孩快到出了,你這樣想,人類男性的精子與女性的卵子就是Class,Class就是基因,基因裡有許許多多密碼(資料成員、方法、屬性、建構子),而精子與卵子結合後就會產生Instance(New),Instance就是實體,是一個活泩生的實體,基因你看不到、摸不到,未結合前我們無法使用它,一但結合後才能產生一個有血有肉的實體,我們才能教育他,在基因裡封裝了許多密碼,也就是會讓你小孩出生後會產生「眼睛像爸爸」「臉像媽媽」…這叫做繼承,這些密碼除了繼承了父母親的基因之外,到了小孩的身上,小孩本身還會自己覆寫這些基因,所以才會有青出於藍勝於藍。
- 建構式"參數"與"多重"建構式
- 無參數(參考範例1)
- 參數(參考範例2)
- 多重建構式(參考範例3)
在同一Class可新增多個建構式來處理不同Data Type(資料型別)的問題,例如一個處理Integer,一個處理Double,在你初始化時,依你傳入的參數型別來呼叫對應的建構式。
- 屬性(Property)
屬性讓引用Class的程式碼於存取Class內部資料成員時,受到進一步的控管。一個設計良好的Class,變數通常被宣告為Private,被限定為只能在定義它的Class內部作存取,然後藉由使用屬性成員公開資料成員值。
- Me關鍵字(參考範例4)
Me讓我們用來區別是Class變數或區域變數,Me能讓你取得Class變數。
- 方法多載(參考範例5)
在同一Class中,你可以使用同一名稱為一個以上的方法命名,只要方法成員所接受的參數不同即可。
- 共用(靜態)成員(參考範例6)
共用成員以物件導向實作"全域變數",不需要產生Class Instance,即不需要透過New的程式(dim MyObject as New OOP
),即可直接引用。共用成員須使用Shared關鍵字宣告,一但宣告為共用成員,可直接透過點(.)運算子直接取用。共用成員並不會隨Object建立有不同的值,固因只有固定不隨物件Instance改變的資料成員,才考慮建立為共同成員。
範例1:無參數建構式
Public Class OOP
Sub New()
'Do Something ...
End Sub
End Class
範例2:參數建構式
Public Class OOP
Sub New()
'Do Something ...
End Sub
'參數建構式
Sub New(ByVal name As String)
'Do Something ...
End Sub
End Class
範例3:多重參數建構式
Public Class OOP
Sub New()
'Do Something ...
End Sub
'處理整理的建構式
Sub New(ByVal a As Integer, ByVal b As Integer)
End Sub
'處理浮點數的建構式
Sub New(ByVal a As Double, ByVal b As Double)
End Sub
End Class
範例4:Me關鍵字
Public Class OOP
Public Hour As Integer
''' <summary>
''' 在函式中會使用到Class變數Hour,但Class的Hour數變與函式參數Hour同名,所以必須使用Me關鍵字來需得Class變數Hour的值。
''' </summary>
''' <param name="Hour">函式區域變數</param>
''' <remarks></remarks>
Public Sub HourTrans(ByVal Hour As Integer)
Me.Hour = Hour
'Do Something ...
End Sub
End Class
範例5:方法多載
Public Class OOP
'處理整數加法
Public Function Add(ByVal a As Integer, ByVal b As Integer) As String
'Do Integer Add
End Function
'處理浮點數加法
Public Function Add(ByVal a As Double, ByVal b As Double) As String
'Do Double Add
End Function
End Class
範例6:共用成員
Public Class OOP
Public Shared dayhour As Integer = 24
Public Shared Function HourTrans(ByVal hour As Integer) As String
'Do Something ...
End Function
End Class
在程式碼中:
Public Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim resultHour As String
'直接使用Class名稱(OOP)來引用方法
resultHour = OOP.HourTrans(16)
End Sub
End Class
你好:
回覆刪除最近才要學習vb,可以之前已經用Dos 寫程式幾拾年了,那是因為一直抗拒學習,現在因桌邊買不到了,定址受限,不得不開始學習,請你告訴我那裡可以找到介紹vb物件的書?例如有没有書在介紹MsgBox(),InputBox(),add(),...等等,我覺得有無限多的這種東西,如何找到他們?
1. 書局;
回覆刪除2. MSDN;
3. books, kingstone;
4. Internet (Blog ...)
我除了大學時是上課學習,畢業後都是自修,以上是我自修的資料來源。提供給你參考。