当前位置:首页 > PHP教程 > php面向对象 > 列表

PHP面向对象程序设计之接口的继承定义与用法详解

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-02 11:22:02 浏览: 评论:0 

本文实例讲述了PHP面向对象程序设计之接口的继承定义与用法,分享给大家供大家参考,具体如下:

在PHP5中,接口是可以继承自另外一个接口的,这样代码的重用更有效了,要注意只有接口和接口之间使用 继承关键字 extends,类实现接口必须实现其抽象方法,使用实现关键字 implements。

下面的这个例子定义接口User,User有两个抽象方法 getName和setName。 又定义了接口VipUser,继承自User接口,并增加了和折扣相关的方法getDiscount。

最后定义了类 Vip,实现了VipUser接口。并实现了其中的三个方法。

  1. <?php 
  2. interface User { 
  3.   public function getName(); 
  4.   public function setName($_name); 
  5. interface VipUser extends User { 
  6.   public function getDiscount(); //添加了获得折扣的抽象方法. 
  7. class Vip implements VipUser { 
  8.   private $name
  9.   private $discount = 0.8;// 定义折扣变量 
  10.   public function getName(){ //实现getName方法 
  11.     return $this->name; 
  12.   } 
  13.   public function setName($_name){//实现setName方法 
  14.     $this->name = $_name
  15.   } 
  16.   public function getDiscount(){//实现折扣方法. 
  17.     return $this->discount; 
  18.   } 
  19. ?> 

接口可以实现多继承,这是接口很特殊的地方,注意下面的代码和用法。

  1. <?php 
  2. interface User { 
  3.   public function getName(); 
  4.   public function setName($_name); 
  5. interface Administrator { 
  6.   public function setNews($_news); 
  7. //注意这里的多继承. 
  8. interface NewsAdministrator extends User,Administrator{ 
  9. class NewsAdmin implements NewsAdministrator { //实现接口 
  10.   public function getName(){ 
  11.     //......... 
  12.   } 
  13.   public function setName($_name){ 
  14.     //......... 
  15.   } 
  16.   public function setNews($_news){ 
  17.     //......... 
  18.   } 
  19. ?> 

抽象类实现接口,可以不实现其中的抽象方法,而将抽象方法的实现交付给具体能被实例化的类去处理。

  1. <?php 
  2. interface User { 
  3.   public function getName(); 
  4.   public function setName($_name); 
  5. //AbstractNormalUser 只实现了 User接口中的一个方法, 
  6. abstract class AbstractNormalUser{ 
  7.   protected $name
  8.   public function getName(){ 
  9.     return $this->name; 
  10.   } 
  11. //这里实现了接口的另外一个方法. 
  12. class NormalUser extends AbstractNormalUser { 
  13.   public function setName($_name){ 
  14.     $this->name = $_name
  15.   } 
  16. $normalUser = new NormalUser(); 
  17. $normalUser->setName("tom"); 
  18. echo "name is ".$normalUser->getName(); 
  19. ?> 

运行结果:

name is tom

Tags: PHP程序设计 PHP接口继承

分享到: