Visual Basic 中的物件簡介
更新:2007 年 11 月
「物件」為包含資料及管理該資料之方法的結構。您在 Visual Basic 當中的所有操作幾乎都與物件相關。如果您剛接觸物件導向程式設計,下列詞彙和概念概觀將能幫助您開始使用。
類別與物件
由於「類別」和「物件」這兩個詞彙在物件導向程式設計中使用相當頻繁,以致於容易將兩者混淆。一般來說,class 是某物的抽象表示,而「物件」是類別代表項目的可用範例。這個規則的唯一例外是共用類別成員,這些成員在類別的執行個體和宣告為類別型別的物件變數中都可使用。
欄位、屬性、方法及事件
類別是由欄位、屬性、方法和事件組成。欄位和屬性表示物件包含的資訊。欄位就像是變數,可直接讀取或設定。例如,如果您有個名為 "Car" 的物件,可以將其色彩儲存在名為 "Color" 的欄位。
屬性像欄位一樣可擷取和設定,但由屬性 Get 和屬性 Set 程序來實作,更能控制值的設定及傳回方式。這個在要儲存的值與使用這個值的程序之間的間接層能幫助分離您的資料,同時也讓您在指派或擷取值之前先進行驗證。
方法表示物件可執行的動作。例如,"Car" 物件可能具有 "StartEngine"、"Drive" 及 "Stop" 方法。您可將程序 (Sub 副程式或函式) 加入至類別來定義方法。
事件是物件從其他物件或應用程式接收或傳送出的告知。當發生特定情況時,事件可讓物件執行動作。例如,"Car" 類別事件可能是 "Check_Engine" 事件。由於 Microsoft Windows 是事件驅動 (Event-Driven) 作業系統,因此事件可來自於其他物件、應用程式或是使用者輸入,例如按滑鼠或按鍵盤。
封裝、繼承及多型
欄位、屬性、方法及事件只是物件導向程式設計的一半。真正的物件導向程式設計需要物件來支援三種功能:封裝 (Encapsulation)、繼承 (Inheritance) 及多型 (Polymorphism)。
「封裝」指的是將一組相關的屬性、方法和其他成員,視為單一單位或物件。物件可以控制變更屬性與執行方法的方式。例如,物件可在允許屬性變更前先驗證值。封裝也可以讓您隱藏物件的實作細節,以便稍後更易於進行變更,這種作法稱為「資料隱藏」(Data Hiding)。
「繼承」則是描述依據現有類別來建立新類別的能力。新類別會繼承基底類別 (Base Class) 的所有屬性、方法及事件,而且可利用其他的屬性和方法來加以自訂。例如,您可以 "Car" 類別為基礎,建立名為 "Truck" 的新類別。"Truck" 類別會從 "Car" 類別繼承 "Color" 屬性,另外也可以具有其他屬性,例如 "FourWheelDrive"。
「多型」指的是您可以有多個交替使用的類別,即使每個類別是以不同的方式來實作相同的屬性或方法。多型對於物件導向程式設計來說相當重要,因為它可以讓您使用名稱相同的項目,而不需考慮當時使用物件的型別為何。例如,指定一個 "Car" 的基底類別,程式設計人員就可以使用多型為任何數目的衍生類別 (Derived Class) 定義不同的 "StartEngine" 方法。名為 "DieselCar" 的衍生類別所具有的 "StartEngine" 方法,可能與基底類別中名稱相同的方法完全不同。其他程序或方法可利用相同的方式來使用衍生類別的 "StartEngine" 方法,而不需考慮當時使用的 "Car" 物件是何種型別。
多載、覆寫及遮蔽
多載、覆寫及遮蔽是三個容易混淆的類似概念。儘管這三種技術都可讓您建立名稱相同的成員,但三者之間還是有些重大差異。
多載成員是用來提供不同版本的屬性或方法,這些版本的名稱都相同,但會接受不同數目的參數或是資料型別不同的參數。
覆寫屬性和方法是用來取代不適用於衍生類別的繼承屬性或方法。覆寫成員必須接受同樣的資料型別和數目相同的引數。衍生類別會繼承覆寫成員。
遮蔽成員則是用來在區域中取代具有較大範圍的成員。任何型別都可遮蔽其他型別。例如,您可宣告屬性來遮蔽相同名稱的繼承方法。遮蔽成員是無法被繼承的。