首頁 >後端開發 >PHP問題 >php多態性如何理解

php多態性如何理解

王林
王林原創
2019-10-10 17:51:043835瀏覽

php多態性如何理解

多態性是指相同的操作或函數、過程可作用於多種類型的物件上並獲得不同的結果。不同的對象,收到相同訊息將可以產生不同的結果,這種現象稱為多態性。

多態性允許每個物件以適合自身的方式去回應共同的訊息。多態性增強了軟體的靈活性和重用性。

一、什麼是多型?

多 態(Polymorphism)以字面上理解就是「多種形狀」。可以理解為多種表現形式,也即「一個對外接口,多個內部實作方法」。在物件導向的理論 中,多態性的一般定義為:同一個操作作用於不同的類別的實例,將產生不同的執行結果。也即不同類別的物件收到相同的訊息時,將會得到不同的結果。

在實際的應用開發中,採用物件導向中的多型主要在於可以將不同的子類別物件當作一個父類別來處理,並且可以屏蔽不同子類別物件之間所存在的差異,寫出通用的程式碼,做出通用的編程,以適應需求的不斷變化。

二、多態的應用設計

在實際的應用開發中,通常為了讓專案能夠在以後的時間裡的輕鬆實現擴展與升級,需要透過繼承實現可重複使用模組進行輕鬆升級。在進行可重複使用模組設計時,就需要盡可能減少的使用流程控制語句。此時就可以採用多型實作該類別設計。

範例:

class painter{ //定义油漆工类
public function paintbrush(){ //定义油漆工动作
echo "油漆工正在刷漆!\n";
}
}
class typist{ //定义打字员类
public function typed(){ //定义打字员工作
echo "打字员正在打字!\n";
}
}
function printworking($obj){ //定义处理类
if($obj instanceof painter){ //若对象是油漆工类,则显示油漆工动作
$obj->paintbrush();
}elseif($obj instanceof typist){ //若对象是打字员类,则显示打字员动作
$obj->typed();
}else{ //若非以上类,则显示出错信息
echo "Error: 对象错误!";
}
}
printworking(new painter()); //显示员工工作
printworking(new typist()); //显示员工工作

分析:在上述程式中,首先定義兩個員工類別:油漆工類別和打字員類別。然後定義一個處理函數,在該函數中,判斷員工是否為已經定義的員工,並列印出員工的工作狀態。其結果如下所示。

油漆工正在刷漆  
打字員正在打字

從以上程式可輕鬆看出,若想顯示其幾種員工的工作狀態,需要先定義該員工類,並在該員工類別中定義員工的工作,然後在printworking()函數中增加elseif語句以檢查物件是哪一員工類別的實例。這在實際的應用中,是非常不可取的。若此時採用多態,則可輕鬆解決此問題。

推薦教學:PHP影片教學

#

以上是php多態性如何理解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn