方法
方法的種類(lèi)
如前所述,實(shí)例方法附屬于特定對(duì)象,而類(lèi)別或者靜態(tài)方法(又稱(chēng)作共享方法)則附屬于某個(gè)類(lèi)別。在典型的實(shí)踐中,實(shí)例方法發(fā)送一個(gè)隱藏的參考(舉例來(lái)說(shuō),this或者self或者M(jìn)e)給所屬的對(duì)象(不論類(lèi)別或類(lèi)實(shí)例),所以它們可以訪問(wèn)與之相關(guān)的數(shù)據(jù)。一個(gè)類(lèi)方法的典型例子即:在給定的類(lèi)別中,其內(nèi)部記錄著已創(chuàng)建對(duì)象的計(jì)數(shù)。
構(gòu)造函數(shù)類(lèi)似于方法,不過(guò)它們是在語(yǔ)句區(qū)塊中創(chuàng)建一個(gè)類(lèi)的實(shí)例時(shí),所自動(dòng)調(diào)用的。在Java、C++、C#以及PHP里,它們和所屬對(duì)象的類(lèi)別,皆有相同的名稱(chēng)。在Visual Basic里,構(gòu)造函數(shù)稱(chēng)為New,而且在Object Pascal里,構(gòu)造函數(shù)可以有用戶(hù)所定義的名字(不過(guò)大多稱(chēng)作Create)。構(gòu)造函數(shù)有一部分很像方法,不過(guò)也存在著許多差異,所以通常不把其視為方法。
析構(gòu)函數(shù)是一個(gè)特殊的實(shí)例方法,它是在析構(gòu)一個(gè)類(lèi)的實(shí)例時(shí),所自動(dòng)調(diào)用的。在C++里,它們和所屬對(duì)象的類(lèi)別,皆有相同的名稱(chēng),只不過(guò)在前面多了一個(gè)波浪號(hào)(~)。在Object Pascal里,析構(gòu)函數(shù)可以有用戶(hù)所定義的名字(不過(guò)大多稱(chēng)作Destroy)。
抽象方法是一個(gè)虛設(shè)代碼的方法,它沒(méi)有實(shí)現(xiàn)。它通常用來(lái)占住一個(gè)位置,讓子類(lèi)或者以此為原型的對(duì)象重載,并實(shí)現(xiàn)出相應(yīng)的抽象方法。如此一來(lái),抽象方法有助于明確表明一部分架構(gòu)。
訪問(wèn)方法通常是一個(gè)小型、簡(jiǎn)單的,并提供一個(gè)用來(lái)從程序的其它部分訪問(wèn)對(duì)象狀態(tài)的方法。雖然它引入了一個(gè)新的附屬,但這是直接訪問(wèn)狀態(tài)數(shù)據(jù)的首選方法,因其提供了一個(gè)抽象層。例如,如果銀行賬戶(hù)類(lèi)別提供了getBalance()的訪問(wèn)方法,其用以查詢(xún)余額(而不是直接訪問(wèn)余額數(shù)據(jù)區(qū)域),之后該部分代碼的修改版可以實(shí)現(xiàn)更復(fù)雜的查詢(xún)余額機(jī)制(例如,獲取數(shù)據(jù)庫(kù)),而無(wú)須改變相關(guān)的代碼。一個(gè)用來(lái)改變對(duì)象狀態(tài)的訪問(wèn)方法,通常稱(chēng)作更新方法,有時(shí)又稱(chēng)作更動(dòng)方法。提供這些方法的對(duì)象就被認(rèn)為是可變對(duì)象。
靜態(tài)(共享/類(lèi)別)方法
如前所述,方法可能宣告為靜態(tài)的(在Visual Basic里是shared,在Object Pascal里是class),即靜態(tài)方法活動(dòng)于類(lèi)別層次,而非物理層次。靜態(tài)方法不能觸及一個(gè)特定的類(lèi)實(shí)例(也就是不能觸及this、self、Me等等)以下是以C# 撰寫(xiě)的靜態(tài)成員以及其客戶(hù)端的例子:
publicclassExampleClass{publicstaticvoidStaticExample(){// 靜態(tài)方法的程式碼}publicvoidInstanceExample(){// 此處為實(shí)體方法的程式碼// 可以使用THIS}}/// 上述類(lèi)別的客戶(hù)端:// 呼叫靜態(tài)方法(不包含實(shí)體)ExampleClass.StaticExample();// 呼叫實(shí)體方法ExampleClassobjMyExample=newExampleClass();objMyExample.InstanceExample();
參考條目
面向?qū)ο蟮慕?/span>
面向?qū)ο蟮南到y(tǒng)分析
面向?qū)ο蟮南到y(tǒng)設(shè)計(jì)
面向?qū)ο蟮某绦蛟O(shè)計(jì)
面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言
面向?qū)ο蠓椒▽W(xué)
統(tǒng)一建模語(yǔ)言
軟件設(shè)計(jì)模式
分析模式
軟件重構(gòu)
調(diào)試
參閱
實(shí)現(xiàn)繼承
繼承語(yǔ)義
子程序
虛擬繼承
方法名
免責(zé)聲明:以上內(nèi)容版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請(qǐng)告知,我們將盡快刪除相關(guān)內(nèi)容。感謝每一位辛勤著寫(xiě)的作者,感謝每一位的分享。
- 有價(jià)值
- 一般般
- 沒(méi)價(jià)值
{{item.userName}} 舉報(bào)
{{item.time}} {{item.replyListShow ? '收起' : '展開(kāi)'}}評(píng)論 {{curReplyId == item.id ? '取消回復(fù)' : '回復(fù)'}}
{{_reply.userName}} 舉報(bào)
{{_reply.time}}