標籤: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學習教程 發表