基本介绍: 就是将一些抽象方法封装到一起,在某个类需要使用时,只需要实现该接口就可以, 说的实现接口就是指将该接口中的所有的抽象方法都实现了。 规范: (1) interface 是关键
基本介绍: 就是将一些抽象方法封装到一起,在某个类需要使用时,只需要实现该接口就可以, 说的实现接口就是指将该接口中的所有的抽象方法都实现了。
规范:
(1) interface 是关键字,不能够修改,规定好 。
(2) 接口名称有命名规范是: iXxxxXxxx , 首先以小写的i开头. 后面使用大驼峰命名规则
(3) 接口中的方法,都是抽象方法, 但是不需要使用abstract 去修饰
(4) 接口中,不能有普通的成员属性,但是可以有常量。
快速入门案例:
interface iSelfIntroduction{ //方法:不能有方法体 public function sayName(); public function sayAge(); } class Person implements iSelfIntroduction{ public $name; public $age; public function __construct($name,$age){ $this -> name = $name; $this -> age = $age; } //实现接口: public function sayName(){ echo "我的名字叫" . $this -> name; } public function sayAge(){ echo "我的名字叫" . $this -> age; } } $p1 = new Person("小明",22);
接口的应用案例:
interface iUsb{ public function start(); public function working(); public function stop(); } //创建类来实现接口 class Camera implements iUsb{ public function start(){ echo ‘<br>相机开始工作......‘; } public function working(){ echo ‘<br>相机正在工作......‘; } public function stop(){ echo ‘<br>相机停止工作......‘; } } class Phone implements iUsb{ public function start(){ echo ‘<br>手机开始工作......‘; } public function working(){ echo ‘<br>手机正在工作......‘; } public function stop(){ echo ‘<br>手机停止工作......‘; } } //计算机 class Computer{ //接口的体现 把对象作为传参 public function work(iUsb $myEquipment){ $myEquipment -> start(); $myEquipment -> working(); $myEquipment -> stop(); } } $camera = new Camera(); $phone = new Phone(); $computer = new Computer(); //接口的应用 $computer -> work($phone); $computer -> work($camera);
细节说明: (1)接口不能被实例化
(2)接口中的所有方法都不能实现(不能有方法体)
(3)一个类可以实现多个接口,则需要把实现的所有接口的所有方法都实现(class 类名 implements 接口1 , 接口2......{ 所有接口的方法 })
(4)接口中可以有属性,但只能是常量 ,默认是public, 但不能用public 显式修饰
interface iMyInterface{ const NAME = ‘小明‘; }
(5)一个接口不能继承其它的类,但是可以继承别的接口 (interface 接口1 extends 接口2 , 接口3 { })
继承和接口的混合案例:
class OldMonkey{ public $name; public function __construct($name){ $this -> name = $name; } public function climbing(){ echo "<br>" . $this -> name . "会爬树"; } } interface iFly{ public function flying(); } interface iSwim{ public function swimming(); } class SmallMonkey extends OldMonkey implements iFly,iSwim{ public function flying(){ echo "<br>" . $this -> name . "学会了飞翔"; } public function swimming(){ echo "<br>" . $this -> name . "学会了游泳"; } } $smallmonkey = new SmallMonkey(‘小猴子‘); $smallmonkey -> climbing(); $smallmonkey -> flying(); $smallmonkey -> swimming();