国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > PHP > 正文

舉例講解PHP面對(duì)對(duì)象編程的多態(tài)

2024-05-04 22:35:11
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

什么是多態(tài)?
多態(tài)性,其來(lái)自于dictionary.com的定義是"以不同形式,階段或者類(lèi)型出現(xiàn)在獨(dú)立的組織中或者同種組織中,而不存在根本區(qū)別。"由該定義,我們可以認(rèn)為,多態(tài)性是一種通過(guò)多種狀態(tài)或階段來(lái)描述相同對(duì)象的編程方式。其實(shí),它的真正意義在于:實(shí)際開(kāi)發(fā)中,我們只需要關(guān)注一個(gè)接口或基類(lèi)的編程,而不必?fù)?dān)心一個(gè)對(duì)象所屬于的具體類(lèi)(class)。
如果你熟悉設(shè)計(jì)模式,即使只是有個(gè)初步了解,那么你也會(huì)了解這個(gè)概念。事實(shí)上,PHP5多態(tài)性可能是基于模式設(shè)計(jì)編程中的最偉大的工具。它允許我們以一種邏輯的方式來(lái)組織相類(lèi)似的對(duì)象從而實(shí)現(xiàn)在具體編碼時(shí)不必?fù)?dān)心對(duì)象的具體類(lèi)型;而且,我們只需要對(duì)一個(gè)所期望的接口或基類(lèi)編程即可。一個(gè)應(yīng)用程序越抽象,則它就顯得越靈活--而多態(tài)性是對(duì)行為加以抽象的最好的方式之一。
例如,讓我們考慮一個(gè)叫Person的類(lèi)。我們可以用稱(chēng)為David,Charles和Alejandro的類(lèi)來(lái)子類(lèi)化Person。Person有一個(gè)抽象方法AcceptFeedback(),所有的子類(lèi)都要實(shí)現(xiàn)這個(gè)方法。這意味著,任何使用基類(lèi)Person的子類(lèi)的代碼都能調(diào)用方法AcceptFeedback()。你不必檢查該對(duì)象是一個(gè)David還是一個(gè)Alejandro,僅知道它是一個(gè)Person就夠了。結(jié)果是,你的代碼只需關(guān)注"最小公分母"-Person類(lèi)即可。
在這個(gè)示例中的Person類(lèi)也可以被創(chuàng)建為一個(gè)接口。當(dāng)然,與上面相比存在一些區(qū)別,主要在于:一個(gè)接口并沒(méi)有給出任何行為,而僅確定了一組規(guī)則。一個(gè)Person接口要求的是"你必須支持AddFeedback()方法",而一個(gè)Person類(lèi)可以提供一些AddFeedback()方法的缺省代碼-你對(duì)之的理解可以是"如果你不選擇支持AddFeedback(),那么你應(yīng)該提供一種缺省實(shí)現(xiàn)。"至于如何選擇接口或基類(lèi)則并非本文的主題;但是,一般說(shuō)來(lái),你需要通過(guò)基類(lèi)來(lái)實(shí)現(xiàn)一個(gè)缺省的方法。如果你能夠簡(jiǎn)單地勾勒出你的類(lèi)所要實(shí)現(xiàn)的一組期望的功能,那么你也可以使用一個(gè)接口。

通俗理解
多態(tài)最直接的定義就是讓具有繼承關(guān)系的不同類(lèi)對(duì)象,可以對(duì)相同名稱(chēng)的成員函數(shù)調(diào)用,產(chǎn)生不同的反應(yīng)結(jié)果

多態(tài)的代碼

   

<?php      /**    * 聲明接口Demo    * @author wzy    *    */   interface Demo   {        const NAME = "wangzhengyi";        const AGE = 25;        function fun1 (); // 聲明方法默認(rèn)是public abstract     function fun2 ();   }      class One implements Demo   {        public function fun1 ()     {       echo Demo::NAME . "就讀于中國(guó)傳媒大學(xué)";     }        public function fun2 ()     {       echo Demo::NAME . "的年齡是" . Demo::AGE;     }   }      class Two implements Demo   {        public function fun1 ()     {       echo Demo::NAME . "在北京靈創(chuàng)眾和科技有限公司實(shí)習(xí)中";     }        public function fun2 ()     {       echo Demo::NAME . "去年的年齡是24";     }   }      // 同一個(gè)接口,實(shí)現(xiàn)同一個(gè)方法,不同的對(duì)象,反應(yīng)結(jié)果不同。這就是多態(tài)的表現(xiàn)和應(yīng)用      $one = new One();   $one->fun1(); // wangzhengyi就讀于中國(guó)傳媒大學(xué)   $one->fun2(); // wangzhengyi的年齡是25      echo "<br>";      $two = new Two();   $two->fun1(); // wangzhengyi在北京靈創(chuàng)眾和科技有限公司實(shí)習(xí)中   $two->fun2(); // wangzhengyi去年的年齡是24             
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 西藏| 耿马| 柳州市| 吉木乃县| 光山县| 桦川县| 宽城| 阜新市| 阿瓦提县| 禄丰县| 彭泽县| 高阳县| 平和县| 泰顺县| 汪清县| 黑河市| 岑巩县| 乡城县| 林口县| 乌拉特中旗| 曲松县| 福安市| 伊春市| 扎赉特旗| 柳州市| 北川| 磴口县| 翁源县| 文安县| 永嘉县| 崇仁县| 乌兰浩特市| 冕宁县| 钦州市| 三河市| 钦州市| 乐都县| 东阿县| 肃北| 微博| 荥阳市|