php 多型模式

2021-06-27 22:00:01 字數 1939 閱讀 6848

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

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

在物件導向的軟體開發中,多型性是最為重要的部分之一。物件導向程式設計並不只是將相關的方法與資料簡單的結合起來,而是採用物件導向程式設計中的各種要素將現實生活中的各種情況清晰的描述出來。這一小節將對物件導向程式設計中的多型性作詳細的講解。

1.什麼是多型

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

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

2.  多型的應用設計

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

【示例】例舉了通常採用流程控制語句實現不同類的處理。其**如下所示。

class painter

}class typist

}function printworking($obj)elseif($obj instanceof typist)else

}printworking(new painter()); //

顯示員工工作

printworking(new typist()); //

顯示員工工作

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

油漆工正在刷漆  

打字員正在打字

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

可以首先建立乙個員工父類,所有的員工類將繼承自該員工父類,並且繼承父類的所有方法與屬性。然後在員工類中建立「是一」關係,判斷是否為合法的員工。

【示例】例舉了採用多型的方式改寫上例。其**如下所示。

class employee

}class painter extends employee

}class typist extends employee

}class manager extends employee

}function printworking($obj)else

}printworking(new painter());//

顯示油漆工的工作

printworking(new typist());//

顯示打字員的工作

printworking(new manager());//

顯示經理的工作

分析:在上述程式中,首先定義乙個員工基類,並定義乙個員工工作狀態的方法。然後定義將繼承自員工基類的三個員工類:油漆工類、打字員類和經理類。然後定義顯示員工工作狀態的方法。並在該方法中建立乙個「是一」關係,用於判斷是否為合法的員工。其結果如下所示。

油漆工正在刷漆! 

打字員正在打字! 

經理正在開會!

從上例可發現,無論增加多少個員工類,只需要實現自員工父類繼承的該員工類和方法。而無須修改顯示員工工作狀態的方法printworking()。

php繼承多型

public w3c dtd xhtml 1.0 transitional en class ren class china extends ren function run class america extends ren c new china c say a new america a sa...

PHP 繼承 多型

1.繼承 子類可以繼承父類的一切 2.特點 單繼承 乙個子類只能有乙個父類,但是乙個父類,可以派生多個子類。這就是單繼承 3.舉例子 父類 class ren 美國人的子類 class usa extends ren 中國人的子類 class china extends ren a new usa ...

php多型的實現

多型性是指相同的操作或函式 過程可作用於多種型別的物件上並獲得不同的結果。不同的物件,收到同一訊息將可以產生不同的結果,這種現象稱為多型性。多型性允許每個物件以適合自身的方式去響應共同的訊息。多型性增強了軟體的靈活性和重用性。在物件導向的軟體開發中,多型性是最為重要的部分之一。物件導向程式設計並不只...