成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

PHP中多態性是什么意思

在PHP中,多態性是指同一個操作作用于不同的類的實例,將產生不同的執行結果。也即不同類的對象收到相同的消息時,將得到不同的結果;不同的對象,收到同一消息將可以產生不同的結果,這種現象稱為多態性。多態性允許每個對象以適合自身的方式去響應共同的消息;多態性增強了軟件的靈活性和重用性。

PHP中多態性是什么意思

本教程操作環境:windows7系統、PHP8版、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多態的兩種方法

在PHP5中,變量的類型是不確定的,一個變量可以指向任何類型的數值、字符串、對象、資源等。我們無法說PHP5中多態的是變量。

我們只能說在PHP5中,多態應用在方法參數的類型提示位置。

一個類的任何子類對象都可以滿足以當前類型作為類型提示的類型要求。

所有實現這個接口的類,都可以滿足以接口類型作為類型提示的方法參數要求。

簡單的說,一個類擁有其父類、和已實現接口的身份。

通過實現接口實現多態

<?php interface User{ // User接口     public function  getName();     public function setName($_name); } class NormalUser implements 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(); ?>
登錄后復制

使用接口與組合模擬多繼承

通過組合模擬多重繼承。

在PHP中不支持多重繼承,如果我們向使用多個類的方法而實現代碼重用有什么辦法么?

那就是組合。在一個類中去將另外一個類設置成屬性。

下面的例子,模擬了多重繼承。

接口實例

寫一個概念性的例子。 我們設計一個在線銷售系統,用戶部分設計如下: 將用戶分為,NormalUser, VipUser, InnerUser 三種。要求根據用戶的不同折扣計算用戶購買產品的價格。并要求為以后擴展和維護預留空間。

<?php interface User {     public function getName();     public function setName($_name);     public function getDiscount(); } abstract class AbstractUser implements User {     private $name = "";     protected  $discount = 0;     protected  $grade = "";     function construct($_name) {         $this->setName($_name);      }     function getName() {         return $this->name;     }     function setName($_name) {     $this->name = $_name;     }     function getDiscount() {         return $this->discount;     }     function getGrade() {         return $this->grade;     } } class NormalUser  extends  AbstractUser {     protected $discount = 1.0;     protected $grade = "Normal"; } class VipUser extends AbstractUser {     protected $discount = 0.8;     protected $grade = "VipUser"; } class InnerUser extends AbstractUser {     protected $discount = 0.7;     protected $grade = "InnerUser"; } interface Product {     function getProductName();     function getProductPrice(); } interface Book extends Product {     function getAuthor(); } class BookOnline implements Book {     private $productName;     protected $productPrice;     protected $Author;     function construct($_bookName) {         $this->productName = $_bookName;     }     function getProductName() {         return $this->productName;     }     function getProductPrice() {         $this->productPrice = 100;         return $this->productPrice;     }     public function getAuthor() {         $this->Author = "chenfei";         return $this->Author;     } } class Productsettle {     public static function finalPrice(User $_user, Product $_product, $number) {         $price = $_user->getDiscount() * $_product->getProductPrice() * $number;         return $price;     } } $number = 10; $book = new BookOnline(" 設計模式 "); $user = new NormalUser("tom"); $price = Productsettle::finalPrice($user, $book, $number); $str = "您好,尊敬的" . $user->getName() . "<br />"; $str .= "您的級別是" . $user->getGrade() . "<br />"; $str .= "您的折扣是" . $user->getDiscount() . "<br />"; $str .= "您的價格是" . $price; echo $str; ?>
登錄后復制

推薦學習:《PHP視頻教程》

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
欧美变态口味重另类在线视频| 人妻穿丁字裤陪客户| 欧美疯狂做受XXXX| 拔萝卜打牌不盖被子| CHINESE农村野外XXXXVIDEOS| 亚洲MV国产MV在线MV综合试| 亚洲精品成人网线在线播放VA| 亚洲中文字幕无码永久在线不卡| 在线观看国产一区二区三区| OLDVIDEO高潮日本熟妇| 国产成人AV一区二区三区不卡| 国产自国产自愉自愉免费24区| 久久WWW色情成人免费观看| 免费观看18禁欲无遮挡奶水下 | 亚洲中文无码成人片在线观看| 18禁无遮拦无码国产在线播放| 菠萝菠萝蜜菠萝菠萝5| 国产精品无码免费专区午夜| ZZTT10.CCM黑料| 东北骚妇老熟女DHXⅩXXX| 国产日韩AV无码免费一区二区三| 久久精品成人无码观看免费| 欧美国产激情二区三区| 天天躁日日躁狠狠躁欧美老妇 | 97国产精华最好的产品在线 | 无码毛片AAA在线| 亚洲综合色一区二区三区| 啊灬啊灬啊灬快灬高潮了听书| 2020国产精品香蕉在线观看| 敌伦交换第11部分给了| 禁止18点击进入在线看片尤物| 妺妺窝人体色WWW网| 少妇的丰满人妻HD高清| 亚洲内射少妇AV影院| A级精品国产片在线观看| AV免费无码天堂在线| 国产成人片一区在线观看| 久久99久久99精品免视看动漫| 欧美日韩精品一区二区在线视频| 无码人妻精品一区二区三区蜜桃91| 色欲人妻AAAAAAA无码| 亚洲国产精品无码7777一线 | 色天使色偷偷色噜噜噜AV天堂| 亚洲成AV人片无码不卡| JLZZJLZZ亚洲| 黑人上司粗大拔不出来电影| 趴下老子要从后面CAO你| 亚洲AV无码成人精品区欧洲| 99精品久久99久久久久| 国产午夜视频在线观看720P| 欧美JIZZ18性欧美| 小蜜被两老头吸奶头在线观看| 337P日本欧洲亚洲大胆裸体艺| 国产乱码精品一区三上| 欧美成人精品 一区二区三区| 午夜男女无遮挡啪拍视频| 2019NV天堂香蕉在线观看| 国产清纯美女爆白浆视频| 欧美巨大巨粗黑人性AAAAAA| 亚洲AV永久无码精品三区在线| а√在线官网在线| 久久国产精品-国产精品| 手机看片AV永久免费| 在线成人精品国产区免费| 国产男男Gay做受| 人妻巨大乳一二三区麻豆| 亚洲欧美丝袜 动漫专区| 国产超碰人人爽人人做人人添| 蜜桃久久国产一区二区| 亚洲AV无码熟妇在线观看| 成人性无码专区免费视频| 看全色黄大色大片免费无码 | 日韩AV无码中文无码不卡电影| 一炕四女被窝交换| ALEXANDERWANG妈妈| 精品少妇人妻AV无码久久| 偷拍中国熟妇牲交| Chinese老女人老熟妇69| 久久成人亚洲香蕉草草| 无码一区二区三区久久精品| 暗交小拗女一区二区三区电影 | 国产精品自在拍一区二区不卡| 人妻互换免费中文字幕| 在线观看成人网站| 娇喘潮喷抽搐高潮在线视频 | 一二三四免费观看在线6| 国产男男GAY做受XXX| 色婷婷精品亚洲AⅤ| 中文字幕人成无码免费视频 | 国产人成亚洲综合无码AⅤ蜜桃| 人妻无码AⅤ中文字幕系列| 正在播放东北夫妻内射| 久久97超碰人人澡人人爱| 亚洲AV成人片无码色欲AV自慰| 伊人精品无码一区二区三区电影 | 一本一道人人妻人人妻| 国产又猛又黄又爽| 天天澡天天揉揉AV无码| 差差差30分钟视频轮滑免费| 欧美肥肥婆另类XXXX000| 与亲女洗澡时伦了| 久久精品国产色蜜蜜麻豆| 亚洲成AV人片在线观看| 国产农村乱子伦精品视频| 视频二区 爆乳 丰满 熟女| 超清无码熟妇人妻AV在线电影| 欧美乱妇高清无乱码免费| √最新版天堂资源网在线下载| 久久久久亚洲AV无码网站少妇| 亚洲精品456在线播放| 国产在线拍偷自揄拍无码| 午夜国产精品一二三区无码小说| 国产AV午夜精品一区二区入口| 日韩丰满少妇无吗视频激情内射| 阿公抱着我边摸边吃奶视频| 欧美熟妇另类久久久久久不卡| 98久9在线 | 免费| 女教师の爆乳BD在线观看| 95W乳液78WYW永久| 欧美成人精品高清视频在线观看| 18禁无遮挡啪啪摇乳动态图| 女人被狂躁高潮啊的视频在线看| 18禁爆乳无遮挡免费观看日本动| 免费A级毛片无码A∨性按摩| 中文字幕精品无码一区二区三区| 绿帽娇妻在卧室疯狂的呻吟| 曰韩欧美群交P片内射| 麻豆精品传媒一二三区艾秋| 制服 丝袜 有码 无码 中文| 蜜臀AⅤ永久无码一区二区| 中国少妇内射XXXHD| 女人来高潮水多视频| 99久久亚洲综合精品成人网| 欧美黑人巨大精品VIDEOS| JESSICAJAMES护士性| 日本精品一区二区三区在线视频| 成人免费区一区二区三区 | 男人把女人桶到爽免费应用| 99久久无码一区人妻| 欧美虐SM另类残忍视频| 白白嫩嫩又小又紧| 色欲色香天天天综合无码| 国产精华液一区二区区别| 亚洲AⅤ男人的天堂在线观看| 国精产品一区二区三区糖心| 亚洲精品456在线播放| 久久人人做人人妻人人玩精品VA| 中文字幕精品一二三四五六七八| 女人与公豬交交30分钟视频 | 中文字幕人妻丝袜成熟乱| 欧美做受又硬又粗又大视频| 夜夜添无码一区二区三区 | 精品熟妇无码av免费久久| 又黄又爽又色的视频| 欧美日韩精品SUV| 丰满人妻被公侵犯日本| 无码专区 丝袜美腿 制服师生| 好爽…又高潮了毛片免费看| 一边做饭一边躁狂我会怎么样呢 | 欧美猛少妇色XXXX久久久久| 成熟女人牲交片免费观看视频| 免费网站看V片在线18禁 | 永久免费AV无码不卡在线观看| 欧美丰满熟妇XXXX性PPX人| 俄罗斯卖CSGO的网站免费进入| 午夜无码免费福利视频网址| 久久精品国产亚洲AⅤ无码| 99精品久久久久中文字幕| 少妇邻居内射在线| 好紧好爽太大了视频| 中文字幕巨爆区乳爆系列| 日本免费人成视频在线观看| 国产日产欧美最新| 杂乱小说2第400部| 日本人真人姓交大视频| 国产亚洲精品精华液| 征服丝袜旗袍人妻| 十八款夜间禁用APP| 精品一区二区三区无码免费视频 | 日韩欧美成人免费观看| 国产在线乱子伦一区二区| 自拍偷自拍亚洲精品10P| 少妇做爰免费视频网站| 精品一区二区三人妻视频| А√天堂资源中文在线官网| 午夜影视啪啪免费体验区入口| 雷神ちゃんが人気の原因| 吃瓜黑料视频永久地址| 亚洲精品无码成人片久久不卡| 韩日综合成人中文字幕| 中国CHINESE老熟女| 少妇婬荡久久久久AV无码| 久久精品国产一区二区无码| 菠萝蜜视频网在线WWW| 亚洲高清AⅤ日本欧美视频| 欧美精品一区二区三区在线| 国产日韩精品SUV| 99久久免费精品高清特色大片| 亚洲 欧美精品SUV| 欧美高清熟妇啪啪内射不卡自拍|