亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP多態性入門學習筆記與例子

2024-09-04 11:43:54
字體:
來源:轉載
供稿:網友

多態這個概念,在Java中指的是變量可以指向的對象的類型,可是變量聲明類型的子類。對象一旦創建,它的類型是不變的,多態的是變量。

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

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

一個類的任何子類對象都可以滿足以當前類型作為類型提示的類型要求。所有實現這個接口的類,都可以滿足以接口類型作為類型提示的方法參數要求,通俗來講多態就是指同一東西的多種表現形式;

看如下代碼:

  1. abstract class A{      
  2.     public abstract function abc(); 
  3.  
  4. class AB extends A{ 
  5.     public function abc(){ 
  6.         echo 'ab'
  7.     } 
  8.  
  9. class AC extends A{ 
  10.     public function abc(){ 
  11.         echo 'ac'
  12.     } 
  13.  
  14. class T{ 
  15.     public function abc(){ 
  16.         echo 't' 
  17.     } 
  18.  
  19. class Client{ 
  20.     public static function call(A $obj){ 
  21.         $obj->abc(); 
  22.     } 
  23.  
  24. Client::call(new AB());//ab 
  25. Client::call(new AC());//ac 
  26. Client::call(new T()); //error  Client類的方法應該為   public static function call($obj){      $obj->climb();   } 

如我們創建一個doing()方法,如果是學生則打印上課,如是公司職員則打印上班。

普通做法

使用if判斷

  1. /**  
  2.  * PHP多態性  
  3.  * 瓊臺博客  
  4.  */ 
  5.    
  6. // 定義學生類  
  7. class student{  
  8.     public function cla(){  
  9.             echo "學生工正在上課!<br />";  
  10.     }  
  11. }  
  12.    
  13. // 定義職員類  
  14. class office{                                
  15.         public function Wor(){  
  16.             echo "職員正在上班!<br />";  
  17.         }  
  18. }  
  19.    
  20. // 判斷對象類型方法  
  21. function doing($obj){   
  22.         if($obj instanceof student){   
  23.             $obj->cla();  
  24.         }elseif($obj instanceof office){  
  25.             $obj->wor();  
  26.         }else{  
  27.             echo "沒有這個對象!";  
  28.         }  
  29. }  
  30.    
  31. doing(new student()); // 學生正在上課  
  32. doing(new office());  // 職員正在上班 

以上結果輸出:

學生正在上課

職員正在上班

這種普通方法有個缺點,就是對象如果很多,那么if..else..很長,不靈活。

多態性做法

定義一個公共抽象方法,所有子類繼承它。

  1. /**  
  2.  * PHP多態性  
  3.  * 瓊臺博客  
  4.  */ 
  5.    
  6. // 定義一個公共類  
  7. class pub{  
  8.     protected function working(){  
  9.         echo "本方法需要在子類中重載!";  
  10.     }  
  11. }  
  12.    
  13. // 定義學生類,繼承公共類pub  
  14. class student extends pub{  
  15.     public function working(){  
  16.         echo "學生工正在上課!<br />";  
  17.     }  
  18. }  
  19.    
  20. // 定義職員類,繼承公共類pub  
  21. class office extends pub{  
  22.         public function working(){  
  23.         echo "職員正在上班!<br />";  
  24.         }  
  25. }  
  26.    
  27. // 判斷對象類型方法  
  28. function doing($obj){   
  29.         if($obj instanceof pub){   
  30.             $obj->working();  
  31.         }else{  
  32.             echo "沒有這個對象!";  
  33.         }  
  34. }  
  35.    
  36. doing(new student()); // 學生正在上課  
  37. doing(new office());  // 職員正在上班 

這就是多態的特性,靈活重用。

其它做法

從多態性的實現方式來看,無非就規范了每個類都要重載父類的一個方法,從而達到統一效果。而我們在定義類的時候,自行加上統一的方法也可行,因此以上例子也可以這么實現:

  1. /**  
  2.  * PHP多態性  
  3.  * 瓊臺博客  
  4.  */ 
  5.    
  6. // 定義學生類  
  7. class student{  
  8.     // 定義統一的方法pub  
  9.     public function pub(){  
  10.         echo "學生工正在上課!<br />";  
  11.     }  
  12. }  
  13.    
  14. // 定義職員類  
  15. class office{  
  16.     // 定義統一的方法pub  
  17.         public function pub(){  
  18.         echo "職員正在上班!<br />";  
  19.         }  
  20. }  
  21.    
  22. // 判斷對象類型方法  
  23. function doing($obj){   
  24.     if($obj){  
  25.         // 調用類的統一方法  
  26.             $obj->pub();  
  27.     }else{  
  28.         echo '沒有這個對象';    
  29.     }  
  30. }  
  31.    
  32. doing(new student()); // 學生正在上課  
  33. doing(new office());  // 職員正在上班 

當然,以上的例子不能說明多態性就能使用這樣的方式搞定,畢竟多態性在復雜的程序設計中,它能有效的達到靈活重用的特性。

多態性也可以理解為一種程序設計方式,而程序設計最終目的無非就是:靈活,多態,重用,高效。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人免费视频a| 欧美精品aaa| 久久久久久亚洲精品不卡| 美女黄色丝袜一区| 国产精品扒开腿做爽爽爽视频| 久久久视频精品| 亚洲免费成人av电影| 日韩av免费在线观看| 亚洲综合一区二区不卡| 色青青草原桃花久久综合| 亚洲第一精品久久忘忧草社区| 国产91精品青草社区| 久久久日本电影| 高清亚洲成在人网站天堂| 国产日韩中文字幕| 91av视频在线免费观看| 日韩精品黄色网| 国产精品精品久久久久久| 2019精品视频| 成人h视频在线观看播放| 久久久国产精彩视频美女艺术照福利| 色老头一区二区三区在线观看| 亚洲欧美日韩图片| 91av在线影院| 97国产精品人人爽人人做| 日韩av在线影院| 精品久久久999| 揄拍成人国产精品视频| 欧美成人午夜激情视频| 精品自在线视频| 国产一区二区日韩精品欧美精品| 久久久精品2019中文字幕神马| 北条麻妃久久精品| 亚洲aⅴ男人的天堂在线观看| 亚洲午夜精品视频| 日韩美女视频免费在线观看| 中文字幕亚洲专区| 在线成人免费网站| 少妇精69xxtheporn| 久久久久在线观看| 日韩美女在线播放| 欧美中在线观看| 国产精品日韩欧美综合| 亚洲美女激情视频| 日韩有码在线播放| 欧美在线国产精品| 久久久天堂国产精品女人| 亚洲女人初尝黑人巨大| 欧美色道久久88综合亚洲精品| 国产色婷婷国产综合在线理论片a| 亚洲成人a**站| 另类少妇人与禽zozz0性伦| 亚洲国产精品久久精品怡红院| 91精品国产91久久久久久不卡| xvideos亚洲| 精品久久久久人成| 国产精品美女在线观看| 国产亚洲精品综合一区91| 亚洲国产欧美一区| 91香蕉嫩草神马影院在线观看| 久久精品一偷一偷国产| 日韩欧美一区二区在线| 欧美国产日韩xxxxx| 久久久女人电视剧免费播放下载| 精品国产乱码久久久久久婷婷| 色综合色综合久久综合频道88| 亚洲毛片一区二区| 日本成人免费在线| 欧美专区在线观看| 日韩小视频在线观看| 久久久久久尹人网香蕉| 国内外成人免费激情在线视频| 久久久久久久亚洲精品| 亚洲xxxxx性| 欧美夫妻性生活xx| 成人免费福利在线| 美女少妇精品视频| 清纯唯美亚洲激情| 亚洲aaa激情| 色99之美女主播在线视频| 亚洲欧美成人一区二区在线电影| 国产自产女人91一区在线观看| 丝袜一区二区三区| 国产亚洲a∨片在线观看| 欧美性生活大片免费观看网址| 成人自拍性视频| 欧亚精品在线观看| 亚洲精品国产精品国自产观看浪潮| 91免费看国产| 国产精品扒开腿做| 国产视频精品自拍| 最近2019免费中文字幕视频三| 日本亚洲精品在线观看| 成人免费大片黄在线播放| 日韩精品丝袜在线| 久久精品青青大伊人av| 少妇激情综合网| 欧美高清视频在线观看| 欧美成人三级视频网站| 国产精品久久久久久av福利软件| 91av网站在线播放| 欧美国产欧美亚洲国产日韩mv天天看完整| 色综合色综合久久综合频道88| 国产成人精品免费久久久久| 成人网页在线免费观看| 欧美日韩一区二区免费在线观看| 日韩免费在线看| 亚洲国产第一页| 中文字幕亚洲精品| 色琪琪综合男人的天堂aⅴ视频| 久久九九精品99国产精品| 国产专区精品视频| 日本久久91av| 日韩成人高清在线| 日韩av日韩在线观看| 国产在线高清精品| 久久九九国产精品怡红院| 亚洲最新视频在线| 日韩av免费网站| 高潮白浆女日韩av免费看| 亚洲综合在线做性| 日韩经典第一页| 久久久久久尹人网香蕉| 亚洲性日韩精品一区二区| 日韩av综合网站| 国产精品丝袜高跟| 国产精品高清在线| 国产精品久久久久久久久久小说| 91精品国产91久久久| 国产香蕉一区二区三区在线视频| 日韩福利在线播放| 日韩网站免费观看高清| 亚洲qvod图片区电影| 中文字幕亚洲字幕| 国产成人拍精品视频午夜网站| 国产91精品久久久久久| 日本精品性网站在线观看| 国外成人在线直播| 性色av香蕉一区二区| 日本久久中文字幕| 亚洲精品av在线| 国产精品小说在线| 欧美一区二区三区……| 国产999精品视频| 在线看日韩av| 91精品视频一区| 日韩精品在线影院| 亚洲男女性事视频| 国产欧美在线看| 在线视频一区二区| 欧美国产视频日韩| 欧美韩国理论所午夜片917电影| 国产精品成人观看视频国产奇米| 欧美另类在线播放| 欧美日韩一区二区免费视频| 2020久久国产精品| 国产亚洲欧美日韩精品| 午夜精品理论片| 久久久久久久久久av| 91高清视频免费观看| 午夜剧场成人观在线视频免费观看| 91情侣偷在线精品国产| 欧美精品激情在线观看| 欧美成人激情视频免费观看|