国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php 多態與接口學習實現與實例代碼

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

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

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

一個類的任何子類對象都可以滿足以當前類型作為類型提示的類型要求,所有實現這個接口的類,都可以滿足以接口類型作為類型提示的方法參數要求,簡單的說,一個類擁有其父類、和已實現接口的身份.

通過實現接口實現多態:下面的例子中,useradmin類的靜態方法,要求一個user類型的參數.

在后面的使用中,傳遞了一個實現了user接口的類normaluser的實例,代碼成功運行.

  1. <?php 
  2. interface user{ // user接口 
  3.  public function  getname(); 
  4.  public function setname($_name); 
  5. class normaluser implements user { // 實現接口的類. 
  6.  private $name
  7.  public function getname(){ 
  8.   return $this->name; 
  9.  } 
  10.  public function setname($_name){ 
  11.   $this->name = $_name
  12.  }//開源代碼Vevb.com 
  13. class useradmin{ //操作. 
  14.  public static function  changeusername(user $_user,$_username){ 
  15.   $_user->setname($_username); 
  16.  } 
  17. $normaluser = new normaluser(); 
  18. useradmin::changeusername($normaluser,"tom");//這里傳入的是 normaluser的實例. 
  19. echo $normaluser->getname(); 
  20. ?> 

php 接口類:interface

其實他們的作用很簡單,當有很多人一起開發一個項目時,可能都會去調用別人寫的一些類,那你就會問,我怎么知道他的某個功能的實現方法是怎么命名的呢,這個時候php接口類就起到作用了,當我們定義了一個接口類時,它里面的方式是下面的子類必須實現的,比如,代碼如下:

  1. interface shop  
  2. {  
  3. public function buy($gid);  
  4. public function sell($gid);  
  5. public function view($gid);  

我聲明一個shop接口類,定義了三個方法:買(buy),賣(sell),看(view),那么繼承此類的所有子類都必須實現這3個方法少一個都不行,如果子類沒有實現這些話,就無法運行,實際上接口類說白了,就是一個類的模板,一個類的規定,如果你屬于這類,你就必須遵循我的規定,少一個都不行,但是具體你怎么去做,我不管,那是你的事,代碼如下:

  1. class baseshop implements shop  
  2. {  
  3. public function buy($gid)  
  4. {  
  5. echo('你購買了id為 :'.$gid.'的商品');  
  6. }  
  7. public function sell($gid)  
  8. {  
  9. echo('你賣了id為 :'.$gid.'的商品');  
  10. }  
  11. public function view($gid)  
  12. {  
  13. echo('你查看了id為 :'.$gid.'的商品');  
  14. }  

下面縮一下方法,代碼如下:

  1. <?php   
  2. interface myusbkou   
  3. {   
  4.     function type();//類型   
  5.     function action();//執行的操作   
  6. }   
  7. class zip implements myusbkou   
  8. {  //繼承接口   
  9.     function type() 
  10.     {   
  11.         echo "usb的2.0接口";   
  12.     }   
  13.     function action() 
  14.     {   
  15.         echo "--->需要usb 2.0驅動";   
  16.     }   
  17. }   
  18. class mp3 implements myusbkou 
  19. {   
  20.     function type()   
  21.     {   
  22.      echo "mp3的1.0接口";   
  23.     }   
  24.     function action()   
  25.     {   
  26.      echo "--->需要mp3 1.0驅動<br/>";   
  27.     }   
  28. }   
  29. class mypc 
  30. {   
  31.     function usbthing($thing)   
  32.     {   
  33.         $thing->type();   
  34.         $thing->action();   
  35.     }   
  36. }   
  37. $p=new mypc();   
  38. $mp3=new mp3();   
  39. $zip=new zip();   
  40. $p->usbthing($mp3);   
  41. $p->usbthing($zip);   
  42. ?> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吴旗县| 蛟河市| 云霄县| 房山区| 张北县| 商都县| 冕宁县| 伊春市| 崇信县| 紫阳县| 尼玛县| 永城市| 多伦县| 丹棱县| 鄂尔多斯市| 炎陵县| 海淀区| 波密县| 阿巴嘎旗| 陆丰市| 志丹县| 彰化市| 石屏县| 南木林县| 水城县| 上蔡县| 图们市| 常山县| 武安市| 福海县| 惠州市| 黄山市| 乳源| 寿宁县| 武胜县| 温泉县| 金门县| 桐柏县| 仙桃市| 荥经县| 九寨沟县|