您好,登錄后才能下訂單哦!
這篇文章主要介紹php中多態指的是什么意思,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
php,一個嵌套的縮寫名稱,是英文超級文本預處理語言(PHP:Hypertext Preprocessor)的縮寫。PHP 是一種 HTML 內嵌式的語言,PHP與微軟的ASP頗有幾分相似,都是一種在服務器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似于C語言,現在被很多的網站編程人員廣泛的運用。
php中的多態按字面上意思理解就是“多種形狀”,可以理解為多種表現形式,即“一個對外接口,多個內部實現方法”;在面向對象的理論中,多態性是指同一個操作作用于不同的類的實例,將產生不同的執行結果。
本文操作環境:windows7系統、PHP7.1版,DELL G3電腦
PHP 多態
多態性是指相同的操作或函數、過程可作用于多種類型的對象上并獲得不同的結果。不同的對象,收到同一消息將可以產生不同的結果,這種現象稱為多態性。
多態性允許每個對象以適合自身的方式去響應共同的消息。多態性增強了軟件的靈活性和重用性。
在面向對象的軟件開發中,多態性是最為重要的部分之一。面向對象編程并不只是將相關的方法與數據簡單的結合起來,而是采用面向對象編程中的各種要素將現實生活中的各種情況清晰的描述出來。這一小節將對面向對象編程中的多態性作詳細的講解。
1.什么是多態
多 態(Polymorphism)按字面上意思理解就是“多種形狀”。可以理解為多種表現形式,也即“一個對外接口,多個內部實現方法”。在面向對象的理論 中,多態性的一般定義為:同一個操作作用于不同的類的實例,將產生不同的執行結果。也即不同類的對象收到相同的消息時,將得到不同的結果。
在實際的應用開發中,采用面向對象中的多態主要在于可以將不同的子類對象都當作一個父類來處理,并且可以屏蔽不同子類對象之間所存在的差異,寫出通用的代碼,做出通用的編程,以適應需求的不斷變化。
》
2. 多態的應用設計
在實際的應用開發中,通常為了使項目能夠在以后的時間里的輕松實現擴展與升級,需要通過繼承實現可復用模塊進行輕松升級。在進行可復用模塊設計時,就需要盡可能的減少使用流程控制語句。此時就可以采用多態實現該類設計。
【示例】例舉了通常采用流程控制語句實現不同類的處理。其代碼如下所示。
class painter{ //定義油漆工類 public function paintbrush(){ //定義油漆工動作 echo "油漆工正在刷漆!\n"; } } class typist{ //定義打字員類 public function typed(){ //定義打字員工作 echo "打字員正在打字!\n"; } } function printworking($obj){ //定義處理類 if(objinstanceofpainter)//若對象是油漆工類,則顯示油漆工動作$obj?>paintbrush();elseif(obj instanceof typist){ //若對象是打字員類,則顯示打字員動作 $obj->typed(); }else{ //若非以上類,則顯示出錯信息 echo "Error: 對象錯誤!"; } } printworking(new painter()); //顯示員工工作 printworking(new typist()); //顯示員工工作
分析:在上述程序中,首先定義兩個員工類:油漆工類和打字員類。然后定義一個處理函數,在該函數中,判斷員工是否為已經定義的員工,打印出員工的工作狀態。其結果如下所示。
油漆工正在刷漆 打字員正在打字
從 以上程序可輕松看出,若想顯示其幾種員工的工作狀態,需要首先定義該員工類,并在該員工類中定義員工的工作,然后在printworking()函數中增 加elseif語句以檢查對象是哪一員工類的實例。這在實際的應用中,是非常不可取的。若此時采用多態,則可以輕松解決此問題。
可以首先創建一個員工父類,所有的員工類將繼承自該員工父類,并且繼承父類的所有方法與屬性。然后在員工類中創建“是一”關系,判斷是否為合法的員工。
【示例】例舉了采用多態的方式改寫上例。其代碼如下所示。
class employee{//定義員工父類 protected function working(){//定義員工工作,需要在子類的實現 echo "本方法需要在子類中重載!"; } } class painter extends employee{//定義油漆工類 public function working(){//實現繼承的工作方法 echo "油漆工正在刷漆!\n"; } } class typist extends employee{//定義打字員類 public function working(){ echo "打字員正在打字!\n"; } } class manager extends employee{//定義經理類 public function working(){ echo "經理正在開會!"; } } function printworking($obj){//定義處理方法 if($obj instanceof employee){//若是員工對象,則顯示其工作狀態 $obj->working(); }else{//否則顯示錯誤信息 echo "Error: 對象錯誤!"; } } printworking(new painter());//顯示油漆工的工作 printworking(new typist());//顯示打字員的工作 printworking(new manager());//顯示經理的工作
分析:在上述程序中,首先定義一個員工基類,并定義一個員工工作狀態的方法。然后定義將繼承自員工基類的三個員工類:油漆工類、打字員類和經理類。然后定義顯示員工工作狀態的方法。并在該方法中創建一個“是一”關系,用于判斷是否為合法的員工。其結果如下所示。
油漆工正在刷漆! 打字員正在打字! 經理正在開會!
從上例可發現,無論增加多少個員工類,只需要實現自員工父類繼承的該員工類和方法。而無須修改顯示員工工作狀態的方法printworking()。
以上是“php中多態指的是什么意思”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。