本篇文章給大家分享的是有關(guān)如何在php中實現(xiàn)多態(tài),小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
蘇仙網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),蘇仙網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為蘇仙數(shù)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的蘇仙做網(wǎng)站的公司定做!
多態(tài)性是指相同的操作或函數(shù)、過程可作用于多種類型的對象上并獲得不同的結(jié)果。不同的對象,收到同一消息將可以產(chǎn)生不同的結(jié)果,這種現(xiàn)象稱為多態(tài)性。
多態(tài)性允許每個對象以適合自身的方式去響應(yīng)共同的消息。多態(tài)性增強了軟件的靈活性和重用性。
在面向?qū)ο蟮能浖_發(fā)中,多態(tài)性是最為重要的部分之一。面向?qū)ο缶幊滩⒉恢皇菍⑾嚓P(guān)的方法與數(shù)據(jù)簡單的結(jié)合起來,而是采用面向?qū)ο缶幊讨械母鞣N要素將現(xiàn)實生活中的各種情況清晰的描述出來。這一小節(jié)將對面向?qū)ο缶幊讨械亩鄳B(tài)性作詳細的講解。
什么是多態(tài)
多 態(tài)(Polymorphism)按字面上意思理解就是“多種形狀”??梢岳斫鉃槎喾N表現(xiàn)形式,也即“一個對外接口,多個內(nèi)部實現(xiàn)方法”。在面向?qū)ο蟮睦碚?中,多態(tài)性的一般定義為:同一個操作作用于不同的類的實例,將產(chǎn)生不同的執(zhí)行結(jié)果。也即不同類的對象收到相同的消息時,將得到不同的結(jié)果。
在實際的應(yīng)用開發(fā)中,采用面向?qū)ο笾械亩鄳B(tài)主要在于可以將不同的子類對象都當作一個父類來處理,并且可以屏蔽不同子類對象之間所存在的差異,寫出通用的代碼,做出通用的編程,以適應(yīng)需求的不斷變化。
多態(tài)實現(xiàn)條件
多態(tài)的實現(xiàn)有三個條件:首先必須有繼承,即必須有父類(或基類)及其派生的子類。其次必須有父類的引用指向子類的對象,這是實現(xiàn)多態(tài)最重要的一個條件。最后必須有方法的重寫,即子類必須對父類的某些方法根據(jù)自己的需求進行重寫,方法名和參數(shù)都是相同的。
php實現(xiàn)多態(tài)的方法:
1、通過實現(xiàn)接口實現(xiàn)多態(tài)
下面的例子中,UserAdmin類的靜態(tài)方法,要求一個User類型的參數(shù)。
在后面的使用中,傳遞了一個實現(xiàn)了User接口的類NormalUser的實例。代碼成功運行。
interface User{ // User接口 public function getName(); public function setName($_name); } class NormalUser implements User { // 實現(xiàn)接口的類. private $name; public function getName(){ return $this->name; } public function setName($_name){ $this->name = $_name; } } class UserAdmin{ //操作. public static function ChangeUserName(User $_user,$_userName){ $_user->setName($_userName); } } $normalUser = new NormalUser(); UserAdmin::ChangeUserName($normalUser,"Tom");//這里傳入的是 NormalUser的實例. echo $normalUser->getName(); ?>
程序運行結(jié)果:
Tom
2、通過繼承關(guān)系實現(xiàn)多態(tài)
利用接口與組合,在一個類中將另外一個類設(shè)置成屬性來模擬多重繼承,通過繼承關(guān)系實現(xiàn)多態(tài)。
下面是類和子類的關(guān)系。
class User{ // User接口 public function getName(){} } class NormalUser extends User { // 繼承自User類 private $name; public function getName(){ return $this->name; } public function setName($_name){ $this->name = $_name; } } class UserAdmin{ //操作. public static function ChangeUserName(User $_user,$_userName){ $_user->setName($_userName); } } $normalUser = new NormalUser(); UserAdmin::ChangeUserName($normalUser,"Tom");//這里傳入的是 NormalUser的實例. echo $normalUser->getName(); ?>
程序運行結(jié)果:
Tom
以上就是如何在php中實現(xiàn)多態(tài),小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。