方法 (電腦科學)

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

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

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

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

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

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

 靜態（共享/類別）方法 
如前所述，方法可能宣告為靜態的（在Visual Basic裡是shared，在Object Pascal裡是class），即靜態方法活動於類別層次，而非實體層次。靜態方法不能觸及一個特定的類別實例（也就是不能觸及this、self、Me等等）以下是以C#撰寫的靜態成員以及其客戶端的例子：

 public class ExampleClass
 {
   public static void StaticExample()
   {
      // 靜態方法的程式碼
   }

   public void InstanceExample()
   {
      // 此處為實體方法的程式碼
      // 可以使用THIS
   }
 }

 /// 上述類別的客戶端：

 // 呼叫靜態方法（不包含實體）
 ExampleClass.StaticExample();

 // 呼叫實體方法
 ExampleClass objMyExample = new ExampleClass();
 objMyExample.InstanceExample();

 参考条目 


 面向对象的系统分析
 面向对象设计
 面向对象的程序设计

 统一建模语言
 软件设计模式

 软件重构
 调试

 參閱 
 實作繼承
 繼承語義
 子程式
 虛擬繼承
 方法名

Category:计算机编程

sv:Funktion (programmering)#Metod