方法 (電腦科學)

电脑函数或者函数

物件導向程式設計中,方法(英語:Method;德語:Methode; 法語:Méthode)指的是類別(所謂的類別方法靜態方法工廠方法)、或者是物件(所謂的實體方法)兩者其中之一的一種子程式。如同程序化程式語言的程式,一個方法通常以一系列的語句所組成,並以之完成一個動作。其可以藉由輸入一組參數以制訂所需的動作,且一部分的方法可能會有輸出值(所謂的返回值)。方法的目的是提供一個機制,以存取(對於讀和寫)物件或類別的私有資料儲存區。

方法的種類

如前所述,實體方法附屬於特定物件,而類別或者靜態方法(又稱作共享方法)則附屬於某個類別。在典型的實踐中,實體方法傳送一個隱藏的參考(舉例來說,this或者self或者Me)給所屬的物件(不論類別或類別實例),所以它們可以存取與之相關的資料。一個類別方法的典型例子即:在給定的類別中,其內部記錄著已建立物件的計數。

建構子類似於方法,不過它們是在語句區塊中建立一個類別的實體時,所自動呼叫的。在JavaC++C#以及PHP裡,它們和所屬物件的類別,皆有相同的名稱。在Visual Basic裡,建構子稱為New,而且在Object Pascal裡,建構子可以有使用者所定義的名字(不過大多稱作Create)。建構子有一部分很像方法,不過也存在著許多差異,所以通常不把其視為方法。

解構子是一個特殊的實體方法,它是在解構一個類別的實體時,所自動呼叫的。在C++裡,它們和所屬物件的類別,皆有相同的名稱,只不過在前面多了一個波浪號(~)。在Object Pascal裡,解構子可以有使用者所定義的名字(不過大多稱作Destroy)。

抽象方法是一個虛設代碼的方法,它沒有實作。它通常用來佔住一個位置,讓子類別或者以此為原型的物件重載,並實作出相應的抽象方法。如此一來,抽象方法有助於明確表明一部分架構

存取方法通常是一個小型、簡單的,並提供一個用來從程式的其它部分存取物件狀態的方法。雖然它引入了一個新的附屬,但這是直接存取狀態資料的首選方法,因其提供了一個抽象層。例如,如果銀行帳戶類別提供了getBalance()的存取方法,其用以查詢餘額(而不是直接存取餘額資料區域),之後該部分代碼的修改版可以實作更複雜的查詢餘額機制(例如,取得資料庫),而無須改變相關的代碼。一個用來改變物件狀態的存取方法,通常稱作更新方法,有時又稱作更動方法。提供這些方法的物件就被認為是可變物件

靜態(共享/類別)方法

如前所述,方法可能宣告為靜態的(在Visual Basic裡是shared,在Object Pascal裡是class),即靜態方法活動於類別層次,而非實體層次。靜態方法不能觸及一個特定的類別實例(也就是不能觸及thisself,Me等等)以下是以C『 撰寫的靜態成員以及其客戶端的例子:

 public class Example
   public static void StaticExample
      // 靜態方法的程式碼
   public void InstanceExample
    M// 此處為實體方法的程式碼
   M// 可以使用THIS
 /// 上述類別的客戶端:
 // 呼叫靜態方法(不包含實體)
 ExampleClass.StaticExample
 // 呼叫實體方法
 ExampleClass objMyExample = ExampleClass
 objMyExample.InstanceExample

參考條目

參閱