什麼是接口?接口就是給出一些沒有實現的方法,封裝到一起,到某個類要使用的時候,再根據具體情況把這些方法寫出來。
接口是更加抽象的抽象類,抽象類裡的方法可以有方法體,而接口裡的所有方法都沒有方法體。接口體現了程序設計的多態和高內聚低偶拿來設計思想。
1、接口的基本語法
interface 接口名(
//屬性
//方法
}
例:
<?php
//使用程序模擬現實生活中的USB接口
//接口一般用於定義規范(方法/屬性)
interface iUsb{
public function start();
public function stop();
}
//編寫手機類,讓它去實現接口
//當一個類實現了某個接口,則要求該類必須實現這個接口的所有方法
class Camera implements iUsb{
public function start(){
echo "相機開始工作"."<br />";
}
public function stop(){
echo "相機停止工作"."<br />";
}
}
//編寫手機類
class Phone implements iUsb{
public function start(){
echo "手機開始工作"."<br />";
}
public function stop(){
echo "手機停止工作"."<br />";
}
}
//如何使用
$camera=new Camera();
$camera->start();
$camera->stop();
$phone1=new Phone();
$phone1->start();
$phone1->stop();
?>
2、接口的方法都不能有方法體。
3、如何使用接口?格式如下:
class 類名 implements 接口名1,接口名2,...{
}
4、接口的作用,聲明一系方法,待其它的類來實現這些方法。
什麼情況下使用接口?
1 定規范
2 定下規范,讓別的程序員來實現
3 多個類之間沒有繼承關系,是平級的,這些類都會去實現某個功能,只是實現的方式不一樣。
使用接口的注意事項
1)不能去實例化一個接口。
2)接口中的所有方法,都不能有方法體;
3)一個類可以有多個接口,用逗號隔開。例如:
public class 類名 implements 接口1,接口2...{
}
4)接口中可以有屬性,但必須是常量,默認是public
例:
<?php
interface iUsb{
const A=90; //定義常量,前面不能加$符號
}
echo "ok".iUsb::A; //取出接口中常量A的值
?>
5)接口中的方法,默認都是public的
6)一個接口不能繼承其它的類,但是可以繼承別的接口
<?php
interface iUsb2{
}
interface iUsb3{
}
interface iUsb extends iUsb2,iUsb3{
const A=90; //定義常量,前面不能加$符號
}
echo "ok".iUsb::A; //取出常量A的值
?>
一個接口可繼承多個接口,當一個類實現了某些接口,則必須把所有接口中的方法都實現
例2:
<?php
interface iUsb2{
public function a();
}
interface iUsb3{
public function b();
}
interface iUsb extends iUsb2,iUsb3{ //接口iUsb繼承了iUsb2和iUsb3兩個接口
const A=90; //定義常量,前面不能加$符號
}
//類Class1必須把三個接口中的方法全部實現,否則會報錯
class Class1 implements iUsb{
public function a(){
}
public function b(){
}
public function test(){
}
}
echo "ok".iUsb::A; //取出常量A的值
?>
實現接口與繼承類的比較
1)php的繼承是單繼承,也就是一個類最多只能有一個父類。這種機制,對於類功能的擴展有一定的影響
2)實現接口可以看作是對繼承的一種補充。
3)實現接口,可在不打破繼承關系的前提下,對某個類功能進行擴展。
URL: http://www.bianceng.cn/webkf/PHP/201612/50488.htm