PHP物件導向多態性的應用

來源:互聯網
上載者:User

標籤:http   io   2014   ar   cti   div   代碼   html   

多態是物件導向的三大特性中除封裝和繼承之外的另一重要特性。它展現了動態綁定的功能,也稱為“同名異式”。多態的功能可讓軟體在開發和維護時,達到充分的延伸性。事實上,多態最直接的定義是讓具有繼承關係的不同類對象,可以對相同名稱的成員函數調用,產生不同反應效果。所謂多態性就是指一段程式能夠處理多種類型對象的能力,在PHP中,多態值指的就是方法的重寫。方法重寫是指一個子類中可以重新修改父類中的某些方法,使其具有自己的特徵。重寫要求子類的方法和父類的方法名稱相同,這可以通過聲明抽象類別或是介面來規範。
我們通過電腦USB裝置的應用來介紹一下物件導向中的多態性,目前USB設定的種類僅我們自己用過的我想就有十幾種吧。例如USB滑鼠、USB鍵盤、USB存放裝置等,這些電腦的外部裝置都是通過USB介面串連到電腦以後,被電腦調用並啟動啟動並執行。也就是電腦正常啟動並執行同時,沒插入一種不同USB裝置,就為電腦擴充一樣功能,這正是我們所說的多態特徵。那麼為什麼每個USB裝置不一樣,但都可以被電腦應用呢?那是因為每個USB設定都要遵守電腦USB介面的開發規範,都具有相同的能被電腦載入到並啟用的方法,但運行各自相應的功能。這也正是我們對多態的定義,假設我們有一個主程式已經開發完成,需要後期由其他開發人員為其擴充一些功能,但需要在不改動主程式的基礎上就可以載入到這些擴充的功能模組,其實也就是為程式開發一些外掛程式。這就需要在主程式中需要為擴充的外掛程式程式寫好介面規範,然後每個外掛程式只有按照規範去實現自己的功能,才能被主程式應用到。在電腦中應用USB裝置的程式設計如下所示:

123456789101112131415161718 <?php//定義一個USB介面,讓每個USB裝置都遵守這個規範interface USB{function run();} class Computer{//電腦類中的一個方法可以應用任何一種USB裝置function useUSB($usb){$usb->run();}} $computer =new Computer;$computer ->useUSB(new Ukey()); //為電腦插入一個usb鍵盤裝置,並運行$computer ->useUSB(new Umouse()); //為電腦插入一個usb滑鼠裝置,並運行$computer ->useUSB(new Ustore()); //為電腦插入一個usb存放裝置,並運行?>

下面的代碼根據USB介面定義的規範,實現了USB鍵盤、USB滑鼠和USB儲存三個裝置,當然可以去實現更多的USB設定,都按照自己裝置的功能重寫了run()方法,所以插入電腦啟動運行後每個USB裝置都有自己的形態。代碼如下所示:

123456789101112131415161718192021 <?php//擴充一個USB鍵盤裝置,實現usb介面class Ukey implements USB {function run(){echo "運行USB鍵盤裝置<br>";}}//擴充一個USB滑鼠裝置,實現usb介面class Umouse implements USB {function run(){echo "運行USB滑鼠裝置<br>";}} //擴充一個USB存放裝置,實現usb介面class Ustore implements USB {function run(){echo "運行USB存放裝置<br>";}}?>
 

>> 本文固定連結: http://php.ncong.com/php_course/oop/duotai.html

>> 轉載請註明: 恩聰php 2014年07月25日 於 恩聰PHP學習教程 發表

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.