天天看小說

第148章

大B:“算法和多態(tài)性是編程中的主要思想,但是靠這些術(shù)語,我們很難表述其具體含義。如果想向其他人表示一個(gè)方法,你可以編輯源代碼,然後據(jù)此向其他人仔細(xì)講述。”

小A:“喔。”

大B:“在某些情況下,算法也許完全包含在一個(gè)方法中。但是算法的實(shí)現(xiàn)經(jīng)常依賴於多個(gè)方法的相互使用。”

小A:“嗯。”

大B:“IntroductiontoAlgorithms(算法導(dǎo)論)給出了算法的定義:算法是定義良好的計(jì)算過程,把數(shù)據(jù)值或者數(shù)據(jù)集合作爲(wèi)輸入,並輸出某數(shù)據(jù)值或者數(shù)據(jù)集合。算法是一個(gè)過程——包含一些指令序列,接收輸入,產(chǎn)生輸出。”

小A:“嗯。”

大B:“單個(gè)方法也許是個(gè)算法:它接受輸入——其參數(shù)列表——併產(chǎn)生輸出作爲(wèi)返回值。然而,在面向?qū)ο缶幊虝r(shí)很多算法會(huì)需要多個(gè)方法。算法就是需要完成某項(xiàng)任務(wù)的過程。它們也許表現(xiàn)爲(wèi)某方法的一部分,或者調(diào)用多個(gè)方法。在面向?qū)ο髴?yīng)用程序中,需要多個(gè)方法的算法經(jīng)常依賴多態(tài)性來充許單個(gè)操作的多種實(shí)現(xiàn)。”

小A:“多態(tài)性是方法調(diào)用關(guān)於依賴被調(diào)用的操作和調(diào)用接收者類的基本原則。”

大B:“是啊!比如,你也許關(guān)心當(dāng)Java遇到表達(dá)式isTree()時(shí),會(huì)執(zhí)行哪個(gè)方法。這關(guān)鍵是看方法的依賴關(guān)係。”

小A:“喔。”

大B:“如果對(duì)象m是Machine類的實(shí)例Java會(huì)調(diào)用Machine.isTree()。如果m是MachineComposite的一個(gè)實(shí)例,Java會(huì)調(diào)用MachineComposite.isTree()。非正式地說,多態(tài)性意味著要爲(wèi)合適的對(duì)象調(diào)用合適的方法。很多設(shè)計(jì)模式都使用多態(tài)性,在某些情況下,多態(tài)性與該模式的目標(biāo)緊緊相連。”

小A:“操作、方法、簽名以及算法這四個(gè)概念很容易讓人混淆。”

大B:“但是,搞清楚這些術(shù)語間區(qū)別將有助於我們描述一些重要的概念。”

小A:“是啊!”

大B:“操作,類似於方法簽名,定義了服務(wù)的規(guī)範(fàn)。當(dāng)談到許多方法可能會(huì)有相同的接口的時(shí)候,我們可以使用操作這個(gè)術(shù)語。當(dāng)討論方法查詢規(guī)劃的時(shí)候,我們可以使用簽名這個(gè)術(shù)語。一個(gè)方法的定義包括方法簽名、修飾符、返回類型以及方法體;而方法簽名又包括方法名和參數(shù)列表。一個(gè)方法通常有一個(gè)方法簽名,並實(shí)現(xiàn)一個(gè)操作。啓動(dòng)一個(gè)方法的常見方式是調(diào)用它。方法結(jié)束的常見方式是讓它返回,但是對(duì)任務(wù)程序而言,當(dāng)遇到不可處理的異常時(shí),任何方法都會(huì)停止執(zhí)行。算法是一個(gè)接收輸入併產(chǎn)生輸出的過程。方法也接收輸入、產(chǎn)生輸出,另外它還包含一個(gè)過程化的方法體,因此常常有人將方法體看作是一個(gè)算法。然而,一個(gè)算法的過程可能會(huì)涉及很多操作和方法,也可能僅僅是另外一個(gè)方法的一部分。算法這個(gè)術(shù)語最好是在談到產(chǎn)生某個(gè)結(jié)果的過程時(shí)使用。很多設(shè)計(jì)模式都涉及到把一個(gè)操作分散到幾個(gè)類中去。因而我們可以說這些模式依賴於多態(tài)性,即具體調(diào)用哪個(gè)方法依賴於收到調(diào)用的對(duì)象的類型。不同的類可以用不同的方式來實(shí)現(xiàn)同一個(gè)操作。換句話說,Java支持多態(tài)性機(jī)制。”

第221章第181章第30章第5章第187章第158章第62章第215章第153章第161章第125章第34章第18章第62章第29章第137章第50章第2章第134章第187章第123章第75章第128章第227章第50章第37章第16章第163章第8章第216章第47章第156章第86章第6章第63章第209章第173章第126章第50章第99章第125章第29章第44章第171章第120章第191章第215章第222章第60章第9章第213章第141章第66章第92章第91章第192章第153章第54章第93章第66章第99章第163章第76章第71章第184章第191章第51章第166章第90章第34章第47章第104章第145章第191章第11章第129章第86章第144章第59章第216章第213章第223章第144章第91章第69章第127章第8章第71章第25章第10章第168章第119章第136章第75章第27章第50章第117章第79章第170章第109章
第221章第181章第30章第5章第187章第158章第62章第215章第153章第161章第125章第34章第18章第62章第29章第137章第50章第2章第134章第187章第123章第75章第128章第227章第50章第37章第16章第163章第8章第216章第47章第156章第86章第6章第63章第209章第173章第126章第50章第99章第125章第29章第44章第171章第120章第191章第215章第222章第60章第9章第213章第141章第66章第92章第91章第192章第153章第54章第93章第66章第99章第163章第76章第71章第184章第191章第51章第166章第90章第34章第47章第104章第145章第191章第11章第129章第86章第144章第59章第216章第213章第223章第144章第91章第69章第127章第8章第71章第25章第10章第168章第119章第136章第75章第27章第50章第117章第79章第170章第109章
主站蜘蛛池模板: 喀喇沁旗| 秦皇岛市| 连城县| 常熟市| 嵩明县| 合水县| 天柱县| 巴中市| 任丘市| 句容市| 临沧市| 扎兰屯市| 宁夏| 耒阳市| 敦煌市| 定兴县| 河源市| 肥东县| 拜泉县| 阿城市| 包头市| 来安县| 奉节县| 忻城县| 嘉峪关市| 灵台县| 兴仁县| 昭觉县| 陆河县| 松原市| 循化| 开阳县| 梅河口市| 襄樊市| 丰宁| 大连市| 永胜县| 正镶白旗| 余庆县| 寿阳县| 凤庆县|