gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

PHP中多態(tài)性是什么意思

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

PHP中多態(tài)性是什么意思

本教程操作環(huán)境:windows7系統(tǒng)、PHP8版、DELL G3電腦

PHP 多態(tài)性

多態(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)性作詳細(xì)的講解。

1.什么是多態(tài)

多 態(tài)(Polymorphism)按字面上意思理解就是“多種形狀”。可以理解為多種表現(xiàn)形式,也即“一個對外接口,多個內(nèi)部實現(xiàn)方法”。在面向?qū)ο蟮睦碚?中,多態(tài)性的一般定義為:同一個操作作用于不同的類的實例,將產(chǎn)生不同的執(zhí)行結(jié)果。也即不同類的對象收到相同的消息時,將得到不同的結(jié)果。

在實際的應(yīng)用開發(fā)中,采用面向?qū)ο笾械亩鄳B(tài)主要在于可以將不同的子類對象都當(dāng)作一個父類來處理,并且可以屏蔽不同子類對象之間所存在的差異,寫出通用的代碼,做出通用的編程,以適應(yīng)需求的不斷變化。

2. 多態(tài)的應(yīng)用設(shè)計

在實際的應(yīng)用開發(fā)中,通常為了使項目能夠在以后的時間里的輕松實現(xiàn)擴展與升級,需要通過繼承實現(xiàn)可復(fù)用模塊進行輕松升級。在進行可復(fù)用模塊設(shè)計時,就需要盡可能的減少使用流程控制語句。此時就可以采用多態(tài)實現(xiàn)該類設(shè)計。

【示例】例舉了通常采用流程控制語句實現(xiàn)不同類的處理。其代碼如下所示。

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()); //顯示員工工作
登錄后復(fù)制

分析:在上述程序中,首先定義兩個員工類:油漆工類和打字員類。然后定義一個處理函數(shù),在該函數(shù)中,判斷員工是否為已經(jīng)定義的員工,打印出員工的工作狀態(tài)。其結(jié)果如下所示。

油漆工正在刷漆   打字員正在打字
登錄后復(fù)制

從 以上程序可輕松看出,若想顯示其幾種員工的工作狀態(tài),需要首先定義該員工類,并在該員工類中定義員工的工作,然后在printworking()函數(shù)中增 加elseif語句以檢查對象是哪一員工類的實例。這在實際的應(yīng)用中,是非常不可取的。若此時采用多態(tài),則可以輕松解決此問題。

可以首先創(chuàng)建一個員工父類,所有的員工類將繼承自該員工父類,并且繼承父類的所有方法與屬性。然后在員工類中創(chuàng)建“是一”關(guān)系,判斷是否為合法的員工。

【示例】例舉了采用多態(tài)的方式改寫上例。其代碼如下所示。

class employee{//定義員工父類 protected function working(){//定義員工工作,需要在子類的實現(xiàn) echo "本方法需要在子類中重載!"; } } class painter extends employee{//定義油漆工類 public function working(){//實現(xiàn)繼承的工作方法 echo "油漆工正在刷漆!n"; } } class typist extends employee{//定義打字員類 public function working(){ echo "打字員正在打字!n"; } } class manager extends employee{//定義經(jīng)理類 public function working(){ echo "經(jīng)理正在開會!"; } } function printworking($obj){//定義處理方法 if($obj instanceof employee){//若是員工對象,則顯示其工作狀態(tài) $obj->working(); }else{//否則顯示錯誤信息 echo "Error: 對象錯誤!"; } } printworking(new painter());//顯示油漆工的工作 printworking(new typist());//顯示打字員的工作 printworking(new manager());//顯示經(jīng)理的工作
登錄后復(fù)制

分析:在上述程序中,首先定義一個員工基類,并定義一個員工工作狀態(tài)的方法。然后定義將繼承自員工基類的三個員工類:油漆工類、打字員類和經(jīng)理類。然后定義顯示員工工作狀態(tài)的方法。并在該方法中創(chuàng)建一個“是一”關(guān)系,用于判斷是否為合法的員工。其結(jié)果如下所示。

油漆工正在刷漆!  打字員正在打字!  經(jīng)理正在開會!
登錄后復(fù)制

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

實現(xiàn)php多態(tài)的兩種方法

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

我們只能說在PHP5中,多態(tài)應(yīng)用在方法參數(shù)的類型提示位置。

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

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

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

通過實現(xiàn)接口實現(xiàn)多態(tài)

<?php 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(); ?>
登錄后復(fù)制

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

通過組合模擬多重繼承。

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

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

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

接口實例

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

<?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(" 設(shè)計模式 "); $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; ?>
登錄后復(fù)制

推薦學(xué)習(xí):《PHP視頻教程》

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
日韩人妻一区二区三区蜜桃视频| 一区二区三区四区毛片| 午夜在线视频免费观看| 91免费网站视频| 制服丝袜综合网| 黄色激情在线视频| 中文字幕欧美人妻精品一区| 免费不卡av在线| 狠狠躁狠狠躁视频专区| 在线观看18视频网站| 99热一区二区三区| www.xxx亚洲| 热久久精品免费视频| 日本人69视频| 成人中文字幕av| 污色网站在线观看| www,av在线| 少妇网站在线观看| 超碰在线超碰在线| 美女在线视频一区二区| 中文字幕国产高清| 欧美图片激情小说| 爱情岛论坛成人| 热这里只有精品| www黄色日本| 国产 日韩 欧美在线| 丰满少妇被猛烈进入高清播放| 免费看污污视频| 国产中文字幕视频在线观看| 欧美视频在线第一页| 香蕉视频免费版| 日本a级片免费观看| 在线视频日韩欧美| 黄色免费视频大全| 亚洲 欧洲 日韩| 国产第一页视频| 日韩欧美在线播放视频| 国产精品久久久久久久99| 欧美视频在线免费播放| 男人添女荫道口图片| 免费一级特黄录像| 老子影院午夜伦不卡大全| 污片在线免费看| 日韩少妇内射免费播放| 影音先锋男人的网站| 日韩av手机版| 成人av一级片| 日韩国产一级片| 中国 免费 av| 午夜影院免费版| 亚洲欧美自拍另类日韩| 国产精品宾馆在线精品酒店| 一二三在线视频| 一级黄色录像免费看| 8x8x最新地址| 北条麻妃av高潮尖叫在线观看| 国产va亚洲va在线va| 亚洲第一页在线视频| 岛国毛片在线播放| 在线免费视频一区| 不卡的av中文字幕| 性欧美1819| 91亚洲精品久久久蜜桃借种| 在线免费观看视频黄| 黄色免费网址大全| 日本美女高潮视频| 色噜噜狠狠一区二区| 日本免费色视频| 亚洲黄色片免费| 中文字幕在线乱| 毛片在线视频观看| 成人黄色大片网站| 成人精品视频一区二区| www日韩在线观看| 欧美成人黄色网址| 亚洲欧美日韩网站| 800av在线免费观看| 黄色一级片黄色| 人妻有码中文字幕| 国产原创精品在线| a级网站在线观看| 全黄性性激高免费视频| 国产男女无遮挡| 亚洲欧美天堂在线| 丁香婷婷综合激情| 手机在线免费观看毛片| 波多野结衣在线免费观看| 国产一级做a爰片久久毛片男| jizzjizz国产精品喷水| 亚洲这里只有精品| 97在线免费视频观看| 精品少妇人欧美激情在线观看| 国产一区视频免费观看| 成人区一区二区| 免费看又黄又无码的网站| 97公开免费视频| 国产一区一区三区| 黄色片久久久久| www.se五月| 欧美爱爱视频免费看| www.污污视频| 男女视频网站在线观看| 99中文字幕在线| 国产a级一级片| 国产一二三四区在线观看| 伊人成色综合网| 日本道在线视频| 超碰在线97免费| av在线播放天堂| 黄色一级片网址| 日日噜噜夜夜狠狠| 国产精品999视频| 一区二区三区一级片| 五月婷婷狠狠操| 亚洲午夜无码av毛片久久| 在线无限看免费粉色视频| 久久黄色免费看| 黄色国产一级视频| 91传媒免费视频| 亚洲综合123| а 天堂 在线| 国产精品自拍视频在线| 超碰在线97免费| www.日日操| 国产精品wwwww| www.好吊操| av久久久久久| 日韩精品免费一区| 玖玖精品在线视频| 中国 免费 av| 欧美性受黑人性爽| 在线观看三级网站| 4444亚洲人成无码网在线观看| 亚欧精品在线视频| 亚洲综合在线一区二区| 日日夜夜精品视频免费观看| 国产女同无遮挡互慰高潮91| 亚洲va在线va天堂va偷拍| 中文字幕成人免费视频| 性鲍视频在线观看| 91精品一区二区三区四区| 51xx午夜影福利| 日韩中字在线观看| av网站在线观看不卡| 无码内射中文字幕岛国片| 免费黄色一级网站| 亚洲一区二区偷拍| 97久久国产亚洲精品超碰热| 国产精品久久中文字幕| 国产性生交xxxxx免费| 蜜桃免费在线视频| 国产精品jizz在线观看老狼| 免费日韩在线观看| 黄色片视频在线免费观看| 校园春色 亚洲色图| 国产对白在线播放| 黄色一级视频片| 欧美成人手机在线视频| 精品久久久久久无码中文野结衣| 青青草原av在线播放| 91亚洲精品久久久蜜桃借种| 国产一区二区三区在线免费| 男人操女人免费软件| 国产性生活一级片| 日本www在线播放| 裸体裸乳免费看| 成人小视频在线看| 米仓穗香在线观看| wwwxxx黄色片| 国产欧美精品aaaaaa片| 日本在线观看免费视频| 国产女主播自拍| 中文字幕一区久久| 超碰影院在线观看| 成人午夜视频在线观看免费| 欧美国产日韩在线视频| 成人精品小视频| 少妇人妻在线视频| 日韩视频在线观看视频| 奇米影视四色在线| 99精品免费在线观看| 日韩国产一级片| 欧美另类videosbestsex日本| 亚州精品一二三区| 任你操这里只有精品| 国产黄页在线观看| 欧美国产综合在线| 久久天天东北熟女毛茸茸| 亚洲天堂伊人网| 亚洲人视频在线| 中文字幕亚洲欧洲| www.com操| 久久久久久久久久一区二区| 最近免费中文字幕中文高清百度| 777777av| 91精品91久久久中77777老牛| 日韩a∨精品日韩在线观看| 日韩精品在线中文字幕| 日本男女交配视频| cao在线观看|