ebooksgratis.com

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
方法 (電腦科學) - Wikipedia

方法 (電腦科學)

维基百科,自由的百科全书

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

目录

[编辑] 方法的種類

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

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

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

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

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

[编辑] 靜態(共享/類別)方法

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

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

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

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

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

[编辑] 参考条目

[编辑] 參閱

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


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -