裂森把纷挠碑硕喂颁善性俏瘦
接口
1.使用关键字:interface
2.类是对象的模板,接口是类的模板
3.接口看作是一个特殊的类
4.接口中的方法,只声明不实现,与抽象类一样
5.接口中的方法必须是public,支持static
6.接口中可以声明类常量const,但不允许被类或子接口覆盖
7.用类实现一个接口使用implements 关键字
8.一个类可以实现多个接口,多个接口之间用逗号分开
9.接口之间也可以使用关键字extends继承
10.一个类实多个接口时,方法不可以重名
新建demo2.php
<?php //1.声明接口:动物 if(!interface_exists('Animal'))//如果不存在接口Animal { interface Animal { //声明常量 const status = "viable";//存活的 //接口方法:饲养 //接口中的所有方法都是抽象方法,不需要abstruct关键字声明 public function feeding($foods); } } //2.声明一个类来实现动物接口 if(interface_exists('Animal'))//如果存在接口Animal { class Cat implements Animal { private $name="猫"; //必须要实现接口中的抽象方法feeding() public function feeding($foods) { return $this->name."吃".$foods; } } } //实例化Cat $cat=new Cat(); echo $cat->feeding('老鼠'); echo "<hr>"; //简写上方代码: echo (new Cat())->feeding('老鼠');//php5.4+
执行:
继承多接口
<?php //1.声明接口:动物 if(!interface_exists('Animal'))//如果不存在接口Animal { interface Animal { //声明常量 const status = "viable";//存活的 //接口方法:饲养 //接口中的所有方法都是抽象方法,不需要abstruct关键字声明 public function feeding($foods); } } //再定义一个接口:动物的特征 interface Feature { public function hobby($hobby); } //类Dog继承接口Animal,Feature class Dog implements Animal,Feature { private $name="狗"; //必须实现Animal中的feeding()方法 public function feeding($foods) { return $this->name."吃".$foods; } //必须实现Feature中hobby()方法 public function hobby($hobby) { return $hobby; } } //实例化Dog类 echo (new Dog())->feeding('肉'),"<br>"; echo (new Dog())->hobby('勇敢,忠诚,不离不弃。。。'),"<br>";
执行:
链式调用:
<?php //1.声明接口:动物 if(!interface_exists('Animal'))//如果不存在接口Animal { interface Animal { //声明常量 const status = "viable";//存活的 //接口方法:饲养 //接口中的所有方法都是抽象方法,不需要abstruct关键字声明 public function feeding($foods); } } //再定义一个接口:动物的特征 interface Feature { public function hobby($hobby); } //类Dog继承接口Animal,Feature class Dog implements Animal,Feature { private $name="狗"; //必须实现Animal中的feeding()方法 public function feeding($foods) { echo $this->name."吃".$foods; return $this;//返回Dog对象 } //必须实现Feature中hobby()方法 public function hobby($hobby) { echo $hobby; return $this;//返回Dog对象 } } //实例化Dog类 (new Dog())->feeding('肉')->hobby(',忠诚,勇敢,不离不弃。。。'); //如果需要链式调用,必须确保(new Dog())->feeding('肉')返回的是对象,即feeding()的返回值必须是 //对象,即return $this;
执行:
抹秒擦齐兴挫餐效啃纽拘缎妻