PHP接口学习

接口:不同类的共同行为进行定义,然后在不同类中实现不同的功能。

接口的具体语法:

  1. 接口是零件可以用多个零件组成一个新东西;

  2. 接口本身是抽象的,内部申明的方法也是抽象的; 不用加abstract

  3. 一个类可以一次性实现多个接口。语法用implements实现,然后在把接口的功能实现;

  4. 接口也可以基继承,用extends;

  5. 接口是一堆方法的说明,不能加属性(成员变量);

  6. 接口就是供组装成类用的,方法只能用public;

接口作为一种严格规范 降低开发者与调用者的沟通

1、接口实现
举例 人类、动物实现某个动作
定义接口

  1. interface Action()
  2. //接口定义‘public’访问属性方法,无需实现方法 
  3. public function eat( $foods )
  4.  

  5.  

Human ( Animl ) 类实现接口

  1. class Human implements Action()
  2. //实现接口,必须提供接口中定义的方法 
  3. public function eat( $foods)
  4. echo "Human eat {$foods}"

  5.  

  6.  
  7. #Animal类 
  8. class Animal implements Action()
  9. public function eat( $foods)
  10. echo "Animal eat {$foods}"

  11.  

Human( Animal )实现eat的动作:

  1. $human = new Human(); 
  2. $human->eat(); 
  3.  
  4. $animal = new Animal(); 
  5. $animal->eat(); 

instanceof 判断某个对象是否实现了某个接口

  1. function CheckEat( $obj )
  2. if( $obj instanceof Action ){ 
  3. $obj->eat( 'orange' ); 
  4. }else
  5. echo "the object not implements Action"


  6. CheckEat( $human ); 
  7. CheckEat( $animal ); 

2、接口继承

  1. //extends 让接口继承接口 
  2. interface IcanPee extends Action()
  3. public function pee()

  4.  
  5. //当类实现子接口时,父接口定义的方法也需要在这个类里面具体实现 
  6. Class Human1 implements IcanPee()
  7. public function pee(){ } 
  8. public function eat( $foods ){ } 

  • 某个类实现(implements)了某个接口和继承(extends)了某个类的区别?

    • 实现接口和继承很类似,但接口不能直接创建自己的对象

    • 继承的父类必须有该方法的具体实现,子类可以重写父类的方法,也可以不写

    • 接口里面的方法是不需要具体实现的,只要定义了方法的名称和参数即可,具体的实现必须在实现类中定义

    • 一句话概括: 类的方法必须有实现,接口的方法必须为空

posted @ 2017-03-09 22:43  walkingSun  阅读(12506)  评论(0编辑  收藏  举报
**/