1、接口的基本概念?
1)PHP 类是单继承,也就是不支持多继承。
2)当一个类需要多个类的功能时,单继承就无能为力了,为此 PHP 引入了类的接口技术。
3)多人合作开发项目时,需要规范各个功能的名称,就需要用到接口技术。
4)接口就是一种标准,一种规范。类的功能实现,按照标准接口实现即可;
5)接口是一种特殊的抽象类,接口常用在大型项目。
2、接口定义和实现要点
1)interface关键字定义接口;
2)Implements关键字用来实现接口;
3)接口中方法权限必须是public;
4)接口中方法默认是抽象的,所以不需要在方法名前面加 abstract ;
5)接口中方法可以是成员方法,也可以是静态方法;
6)接口中也可以定义常量,但常量不能重写;
7)类可以实现(implements)多个接口(相当于把多个功能集于一身,如手机实现了小灵通、MP3、MP4的功能);
8)接口也可以继承接口;
3、实例:接口的定义和实现演示
//定义第1个接口
interface Inter1
{
//常量
const TITLE = "<<<标题>>>";
//静态的抽象方法
public static function readMe();
}
//定义第2个接口
interface Inter2
{
//公共的成员的抽象方法
public function showInfo();
}
//定义学生类,并实现多个接口功能
final class Student implements Inter1,Inter2
{
//重写Inter1接口中readMe()抽象方法
public static function readMe()
{
echo __METHOD__;
}
//重写Inter2接口中showInfo()抽象方法
public function showInfo()
{
echo __METHOD__;
}
}
//创建学生类对象
$stu = new Student();
$stu->readMe();
echo "<br>";
$stu->showInfo();
结果如下:
4、实例:创建手机类并实现小灵通接口、MP3接口、MP4接口
//定义小灵通接口
interface XiaoLingTong
{
//打电话方法
public function tel();
}
//定义mp3接口
interface Mp3
{
//听音乐
public function music();
}
//定义mp4接口
interface Mp4 extends Mp3
{
//看电影
public function video();
}
//定义手机类并实现以上所有接口的功能
final class Mobile implements XiaoLingTong,Mp4
{
//重写抽象方法
public function tel(){
echo "正在打电话<br>";
}
public function music(){
echo "正在听音乐<br>";
}
public function video(){
echo "正在看电影<br>";
}
//公共的玩游戏方法
public function game(){
echo "正在玩游戏";
}
}
//创建手机类对象
$mob = new Mobile();
$mob->tel();
$mob->music();
$mob->video();
$mob->game();