接口
使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。
接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。
接口中定义的所有方法都必须是公有,这是接口的特性。
实现
> 要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。
Note:
- 1 、实现多个接口时,接口中的方法不能有重名。
- 2、接口也可以继承,通过使用 extends 操作符。
- 3、类要实现接口,必须使用和接口中所定义的方法完全一致的方式。否则会导致致命错误。
常量
接口中也可以定义常量。接口常量和类常量的使用完全相同,但是不能被子类或子接口所覆盖。
<?php
//接口来定义规范
interface iUsb extends iMouse{
//public $a = 90;//这个直接在接口中定义变量是错误的。
//public const A=90;//这个带有访问修饰符 提示报错
const A = 90;这样定义常量是没毛病的,而且后续不能对这个值进行更改。
public function start();//定义方法的访问修饰符必须是public 否则报错了。
public function stop();
}
interface iMouse{
public function move();
}
interface iShow{
public function show();
}
class Camera implements iUsb,iShow{
public function move(){
print "相机移动<br/>";
}
public function start(){
print "相机开始工作<br/>";
}
public function stop(){
print "相机停止工作<br/>";
}
public function show(){
print "相机show<br/>";
}
}
class TelPhone implements iUsb,iShow{
public function move(){
print "手机移动<br/>";
}
public function start(){
print "手机开始工作<br/>";
}
public function stop(){
print "手机停止工作<br/>";
}
public function show(){
print "手机show<br/>";
}
}
$camera = new Camera();
$camera->start();
$camera->stop();
$camera->move();
$camera->show();
$telphone = new TelPhone();
$telphone->start();
$telphone->stop();
$telphone->move();
$telphone->show();
print "<br/>".iUsb::A;
?>
结果:—注意接口内部定义的说明
相机开始工作
相机停止工作
相机移动
手机开始工作
手机停止工作
手机移动
90
总结:
1、一个接口可以继承多个接口
2、当一个类实现了某些接口时候,则必须把所有接口的方法全部实现