• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      PHP中多態(tài)的實(shí)現(xiàn)

      2016-05-14 03:34:10溫振宏
      關(guān)鍵詞:多態(tài)面向?qū)ο?/a>

      溫振宏

      摘要:多態(tài)指同一個(gè)實(shí)體同時(shí)具有多種形態(tài),是面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)的一個(gè)重要特征。Java語(yǔ)言,C++語(yǔ)言,PHP語(yǔ)言都支持多態(tài)。但PHP的教材和相關(guān)書(shū)籍中很少提到多態(tài),故很多人認(rèn)為PHP不支持多態(tài)。本文以實(shí)例講解的形式證明PHP完全能夠?qū)崿F(xiàn)多態(tài)。

      關(guān)鍵詞:多態(tài) 面向?qū)ο?PHP

      中圖分類(lèi)號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2016)05-0000-00

      1 PHP語(yǔ)言介紹

      PHP是一種HTML內(nèi)嵌式的,用來(lái)制作動(dòng)態(tài)網(wǎng)頁(yè)的服務(wù)器端的腳本語(yǔ)言。其特點(diǎn)是:開(kāi)發(fā)周期短,穩(wěn)定安全,簡(jiǎn)單易學(xué),免費(fèi)開(kāi)源,良好的跨平臺(tái)特性。PHP是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,目前已成為全球最受歡迎的五大開(kāi)發(fā)語(yǔ)言之一。

      2 多態(tài)的概念

      封裝、繼承和多態(tài)是面向?qū)ο蟮娜筇匦?。多態(tài)英文為Polymorphism,是指同一個(gè)實(shí)體同時(shí)具有多種不同的形態(tài)。多態(tài)是面向?qū)ο蟪绦蛟O(shè)計(jì)的一個(gè)重要特征,如果一個(gè)語(yǔ)言只支持類(lèi)而不支持多態(tài),說(shuō)明該語(yǔ)言是基于對(duì)象的,而不是面向?qū)ο蟮摹HP是面向?qū)ο蟮腤eb開(kāi)發(fā)語(yǔ)言,因此PHP是支持多態(tài)的。多態(tài)Polymorphism按字面的意思就是“多種狀態(tài)”。同一操作作用于不同的對(duì)象,可以有不同的解釋?zhuān)a(chǎn)生不同的執(zhí)行結(jié)果。在面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言中,接口的多種不同的實(shí)現(xiàn)方式即為多態(tài)。多態(tài)性是允許你將父類(lèi)設(shè)置成一個(gè)或多個(gè)其子對(duì)象相等的技術(shù),父對(duì)象可以根據(jù)子對(duì)象的特性以不同的方式運(yùn)作。簡(jiǎn)單的說(shuō),就是允許將子類(lèi)對(duì)象指向父類(lèi)的引用。PHP是一種弱類(lèi)型的編程語(yǔ)言,其變量的使用無(wú)需先聲明,即不必指明變量的數(shù)據(jù)類(lèi)型,故在子類(lèi)指向父類(lèi)的引用時(shí)亦無(wú)需聲明對(duì)象的數(shù)據(jù)類(lèi)型。

      3 多態(tài)的作用

      把不同的子類(lèi)對(duì)象都當(dāng)作父類(lèi)來(lái)看,可以屏蔽不同子類(lèi)對(duì)象之間的差異,寫(xiě)出通用的代碼,做出通用的編程,以適應(yīng)需求的不斷變化。比如某個(gè)基類(lèi)繼承出多個(gè)子類(lèi),其基類(lèi)有一個(gè)方法echoVoice,其子類(lèi)也有這個(gè)方法,但行為不同,這些子類(lèi)對(duì)象可以賦給其基類(lèi)對(duì)象的引用,這樣其基類(lèi)的對(duì)象就可以執(zhí)行不同的操作了。實(shí)際上是通過(guò)基類(lèi)來(lái)訪問(wèn)其子類(lèi)對(duì)象的。整體來(lái)看,多態(tài)可以減少代碼冗余,增加代碼的運(yùn)行效率。

      4 多態(tài)實(shí)現(xiàn)條件

      多態(tài)的實(shí)現(xiàn)有三個(gè)條件:首先必須有繼承,即必須有父類(lèi)(或基類(lèi))及其派生的子類(lèi)。其次必須有父類(lèi)的引用指向子類(lèi)的對(duì)象,這是實(shí)現(xiàn)多態(tài)最重要的一個(gè)條件。最后必須有方法的重寫(xiě),即子類(lèi)必須對(duì)父類(lèi)的某些方法根據(jù)自己的需求進(jìn)行重寫(xiě),方法名和參數(shù)都是相同的。

      5 PHP多態(tài)舉例

      首先,定義父類(lèi)Animal。Animal類(lèi)中包含private屬性$name,構(gòu)造方法construct,獲取動(dòng)物名稱(chēng)的方法getAnimalName及動(dòng)物發(fā)聲的方法echoVoice。

      class Animal{

      private $name;

      function __construct($name){

      $this->name = $name;

      }

      function getAnimalName(){

      echo $this->name;

      }

      function echoVoice(){

      echo “動(dòng)物的叫聲!”;

      }

      }

      其次,定義子類(lèi)Bird及Cat。子類(lèi)Bird和Cat分別繼承父類(lèi)Animal。在子類(lèi)Bird和Cat中重寫(xiě)父類(lèi)的echoVoice方法。

      class Bird extends Animal{

      function echoVoice(){

      echo “這是鳥(niǎo)的叫聲!”;

      }

      }

      class Cat extends Animal{

      function echoVoice(){

      echo “這是貓的叫聲!”;

      }

      }

      然后,定義女孩類(lèi)Girl。Girl類(lèi)中包含private屬性$girlName,構(gòu)造方法construct,獲取女孩名的方法getGirlName及養(yǎng)寵物的方法feedingPet方法。feedingPet方法是實(shí)現(xiàn)多態(tài)的一個(gè)重要環(huán)節(jié),參數(shù)$pet會(huì)根據(jù)不同的子類(lèi)對(duì)象作出不同的形態(tài),即多態(tài)。

      class Girl{

      private $girlName;

      function __construct($girlName){

      $this->girlName = $girlName;

      }

      function getGirlName(){

      echo $this->girlName;

      }

      function feedingPet($pet){

      $pet->getName();

      $pet->echoVoice();

      }

      }

      最后,實(shí)例化對(duì)象$bird1,$cat1及$girl1,$girl2。通過(guò)對(duì)象$girl1和$girl2分別調(diào)用feedingPet方法,傳遞的參數(shù)分別為子類(lèi)對(duì)象$bird1和$cat1。

      $bird1 = new Bird(“百靈鳥(niǎo)”);

      $cat1 = new Cat(“波斯貓”);

      $girl1 = new Girl(“女孩1”);

      $girl1->getGirlName();

      echo “養(yǎng)的寵物是:”;

      $girl1->feedingPet($bird1);

      $girl2 = new Girl(“女孩2”);

      echo “養(yǎng)的寵物是:”;

      $girl2->feedingPet($cat1);

      結(jié)果輸出:女孩1養(yǎng)的寵物是:百靈鳥(niǎo),這是鳥(niǎo)的叫聲!女孩2養(yǎng)的寵物是:波斯貓,這是貓的叫聲!

      從上面的實(shí)例看出,父類(lèi)(或基類(lèi))Animal中的getAnimalName方法根據(jù)子類(lèi)對(duì)象$bird1輸出百靈鳥(niǎo),根據(jù)子類(lèi)對(duì)象$cat1輸出波斯貓。而在子類(lèi)Bird和Cat中又分別重寫(xiě)了父類(lèi)Aniaml中的echoVoice方法,故子類(lèi)對(duì)象$bird1和$cat1分別輸出了自己的echoVoice方法中的內(nèi)容:“這是鳥(niǎo)的叫聲!”和“這是貓的叫聲”。因此,我們可以得出結(jié)論,PHP程序設(shè)計(jì)語(yǔ)言中完全可以實(shí)現(xiàn)多態(tài)。

      參考文獻(xiàn)

      [1] 高洛峰,LAMP兄弟連.細(xì)說(shuō)PHP2[M].電子工業(yè)出版社,2012.10.

      猜你喜歡
      多態(tài)面向?qū)ο?/a>
      分層多態(tài)加權(quán)k/n系統(tǒng)的可用性建模與設(shè)計(jì)優(yōu)化
      參差多態(tài)而功不唐捐
      面向?qū)ο蟮挠?jì)算機(jī)網(wǎng)絡(luò)設(shè)計(jì)軟件系統(tǒng)的開(kāi)發(fā)
      面向?qū)ο蟮臄?shù)據(jù)交換協(xié)議研究與應(yīng)用
      面向?qū)ο骔eb開(kāi)發(fā)編程語(yǔ)言的的評(píng)估方法
      人多巴胺D2基因啟動(dòng)子區(qū)—350A/G多態(tài)位點(diǎn)熒光素酶表達(dá)載體的構(gòu)建與鑒定及活性檢測(cè)
      面向?qū)ο笮畔⑻崛≈杏跋穹指顓?shù)的選擇
      河南科技(2014年10期)2014-02-27 14:09:03
      煙堿型乙酰膽堿受體基因多態(tài)與早發(fā)性精神分裂癥的關(guān)聯(lián)研究
      常宁市| 宁河县| 鄂州市| 彩票| 永修县| 定安县| 手游| 青海省| 绥江县| 西畴县| 太仆寺旗| 高青县| 眉山市| 蓝田县| 灵武市| 屏山县| 长子县| 江源县| 山东省| 中牟县| 治县。| 思茅市| 两当县| 额尔古纳市| 嘉善县| 梅河口市| 德惠市| 郸城县| 北京市| 库车县| 湟中县| 黎平县| 醴陵市| 当涂县| 桐柏县| 巩义市| 秦皇岛市| 广南县| 焉耆| 伊宁市| 永仁县|