ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## **interface 接口** >[info]子类实现接口用implements 特点: * 1.接口中只有常量属性和抽象方法(所有的方法都是抽象方法,就不需要abstract) * 2.接口也是特殊的类 * 3.不能实例化接口类 * 4.子类用implements实现接口,要实现接口中所有的方法,如果没有实现所有的抽象方法,就必须申明为抽象类 * 5.子类可以实现多个接口;而继承只能继承一个父类(如C类继承A类后就不能继承B类等其他类了) * 6.子类实现多个接口时子类必须实现多个接口源(父类)的所有抽象方法(如例子3中必须定义eat和say方法) 例子1: ``` interface Person {      // public $name = 'zhangsan'; //报错      // 常量属性      const HOST = 'localhost';      // 定义抽象方法      public function say(); } class Boy implements Person {      public $name = '张三';      public function say()      {           echo $this->name.'Hello World!!!';      } } // 实例化 // $p = new Person; // 不可以实例化接口 $b = new Boy; $b->say();//张三Hello World!!! ``` 例子2: ``` /*  实现接口,要实现接口中所有的方法,如果没有实现所有的抽象方法,就必须申明为抽象类 */ interface Person {   public function eat();   public function study(); } class Boy implements Person {   // 抽象方法具体化   public function eat()   {     echo '我要去新东方烹饪学院学习炒菜';   }  // 抽象方法具体化   public function study()   {    echo '我要去蓝翔学习挖掘机技术';   }   // 自定义的方法   public function say()   {    echo '我要使用PHP操作挖掘机,炒菜';   } } abstract class Girl implements Person {   public function eat()  {    echo '6块钱的麻辣烫好贵,5块可行';   }  // study()抽象方法缺少所以必须声明为抽象类 } $b = new Boy; $b->eat(); $b->study(); $b->say(); ``` 例子3: ``` interface A {   public function say(); } interface B {   public function eat(); } class C implements A,B {   public function say()  {    echo '昨天晚上春儿和静静去澡堂洗白白,春儿给静静搓背';  }   public function eat()   {    echo '春儿这两天有点疲惫,需要吃点汇仁肾宝';   } } $c = new C; $c->say(); $c->eat(); ``` **例子:接口对接** >[info] 将老的或者要对接的接口类传入到新的或者自己的接口类中根据功能进行封装 ``` //老的代码      class User {         private $name;         function __construct($name) {             $this->name = $name;         }         public function getName() {             return $this->name;         }     }                //新代码,开放平台标准接口     interface UserInterface {         function getUserName();     }     class UserInfo implements UserInterface {         protected $user;         function __construct($user) {             $this->user = $user;         }         public function getUserName() {             return $this->user->getName();         }     }                  $olduser = new User('张三');     echo $olduser->getName()."n";     $newuser = new UserInfo($olduser);     echo $newuser->getUserName()."n"; ```