用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

php 多态与接口学习实现与实例代码

时间:2015-01-23  来源:西部数据  作者:西部数据

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.  }//开源代码phpfensi.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. ?> 
来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
    无相关信息
栏目更新
栏目热门