程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP接口

PHP接口

編輯:PHP綜合

什麼是接口?接口就是給出一些沒有實現的方法,封裝到一起,到某個類要使用的時候,再根據具體情況把這些方法寫出來。

接口是更加抽象的抽象類,抽象類裡的方法可以有方法體,而接口裡的所有方法都沒有方法體。接口體現了程序設計的多態和高內聚低偶拿來設計思想。

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved