接口:不同类的共同行为进行定义,然后在不同类中实现不同的功能。
接口的具体语法:
-
接口是零件可以用多个零件组成一个新东西;
-
接口本身是抽象的,内部申明的方法也是抽象的; 不用加abstract
-
一个类可以一次性实现多个接口。语法用implements实现,然后在把接口的功能实现;
-
接口也可以基继承,用extends;
-
接口是一堆方法的说明,不能加属性(成员变量);
-
接口就是供组装成类用的,方法只能用public;
接口作为一种严格规范 降低开发者与调用者的沟通
1、接口实现
举例 人类、动物实现某个动作
定义接口
- interface Action(){
- //接口定义‘public’访问属性方法,无需实现方法
- public function eat( $foods );
-
- }
-
Human ( Animl ) 类实现接口
- class Human implements Action(){
- //实现接口,必须提供接口中定义的方法
- public function eat( $foods){
- echo "Human eat {$foods}";
- }
-
- }
-
- #Animal类
- class Animal implements Action(){
- public function eat( $foods){
- echo "Animal eat {$foods}";
- }
-
- }
Human( Animal )实现eat的动作:
- $human = new Human();
- $human->eat();
-
- $animal = new Animal();
- $animal->eat();
instanceof 判断某个对象是否实现了某个接口
- function CheckEat( $obj ){
- if( $obj instanceof Action ){
- $obj->eat( 'orange' );
- }else{
- echo "the object not implements Action";
- }
- }
- CheckEat( $human );
- CheckEat( $animal );
2、接口继承
- //extends 让接口继承接口
- interface IcanPee extends Action(){
- public function pee();
- }
-
- //当类实现子接口时,父接口定义的方法也需要在这个类里面具体实现
- Class Human1 implements IcanPee(){
- public function pee(){ }
- public function eat( $foods ){ }
- }
-
某个类实现(implements)了某个接口和继承(extends)了某个类的区别?
-
实现接口和继承很类似,但接口不能直接创建自己的对象
-
继承的父类必须有该方法的具体实现,子类可以重写父类的方法,也可以不写
-
接口里面的方法是不需要具体实现的,只要定义了方法的名称和参数即可,具体的实现必须在实现类中定义
-
一句话概括: 类的方法必须有实现,接口的方法必须为空。
-