php中抽象类和接口的概念和区别

本文详细解释了PHP中抽象类和接口的概念与用法。包括抽象类的特点、定义及使用方法,接口的定义与实现方式,并对比了两者之间的主要区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

[php]  view plain copy
  1. //抽象类的定义:  
  2. abstract class ku{  //定义一个抽象类  
  3.   abstract function kx();  
  4.   ......  
  5. }  
  6.   
  7. function aa extends ku{  
  8.   //实现抽象类的方法  
  9.   function kx(){  
  10.     echo 'sdsf';  
  11.   }  
  12. }  
  13.   
  14. //使用方法  
  15.   
  16. $aa=new aa;  
  17. $aa->kx();  
  18.   
  19. //1.定义一些方法,子类必须完全实现这个抽象中所有的方法  
  20. //2.不能从抽象类创建对象,它的意义在于被扩展  
  21. //3.抽象类通常具有抽象方法,方法中没有大括号  
  22. //4.抽象方法不必实现具体的功能,由子类来完成  
  23. //5.在子类实现抽象类的方法时,其子类的可见性必须大于或等于抽象方法的定义  
  24. //6.抽象类的方法可以有参数,也可以为空  
  25. //7.如果抽象方法有参数,那么子类的实现也必须有相同的参数个数  
  26.   
  27.   
  28.   
  29.   
  30.   
  31. //////////////////////////////接口类的定义:  
  32. interface Shop{  
  33.       public   function buy($gid);  
  34.       public   function sell($gid);  
  35.       abstract function view($gid);  
  36. }  
  37. //如果要使用接口,必须定义接口类中的所以方法少一个都不可以(abstract除外)。  
  38. //这样如果在一个大项目中不管别人怎么去做下面的方法,但是他必须实现本接口中的所有方法才可以!  
  39.   
  40.   
  41. //例:实现上面的接口的一种方法  
  42. class BaseShop implements Shop{  
  43.    public function buy($gid){  
  44.       echo '你购买了ID为 :' . $gid . '的商品';  
  45.    }  
  46.    public function sell($gid){  
  47.       echo '你购卖ID为 :' . $gid . '的商品';  
  48.    }  
  49.    public function view($gid){  
  50.       echo '你浏览了ID为 :' . $gid . '的商品';  
  51.    }  
  52. }  
  53.   
  54.   
  55. //接口的多重继承示例:  
  56. <?php  
  57. interface staff_i1{ //接口1  
  58.   function setID();  
  59.   function getID();  
  60. }  
  61.   
  62. interface staff_i2{ //接口2  
  63.   function setName();  
  64.   function getName();  
  65. }  
  66.   
  67. class staff implements staff_i1,staff_i2{  
  68.   private $id;  
  69.   private $name;  
  70.   function setID($id){  
  71.     $this->id = $id;  
  72.   }  
  73.   
  74.   function getID(){  
  75.     return $this->id;  
  76.   }  
  77.   
  78.   function setName($name){  
  79.     $this->name = $name;  
  80.   }  
  81.   
  82.   function getName(){  
  83.     return $this->name;  
  84.   }  
  85.   
  86.   function otherFunc(){ //这是一个接口中不存在的方法  
  87.     echo “Test”;  
  88.   }  
  89. }  
  90. ?>  

          

 

 

 他们的不同点:

1。抽象类中可以有非抽象的方法而接口中只能够有抽象的方法!

2。一个类可以实现多个接口,而一个类只能继承一个抽象类!

3。接口的使用方式通过implements关键字进行,抽象类则是通过继承extends关键字进行!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值