新聞中心

1、接口的聲明
如果抽象類中的所有方法都是抽象方法,我們就可以使用另外一種聲明方式——“接口”技術(shù)。我們都知道類的聲明是使用“class”關(guān)鍵字,而接口的聲明則是使用“interface”關(guān)鍵字。聲明接口的格式如下所示:
interface 接口名稱{
// 常量成員
// 抽象方法
}
接口中所有的方法都是抽象方法,而且不需要在方法前使用 abstract 關(guān)鍵字進行修飾。而且在接口中也不需要顯示地使用 public 訪問權(quán)限來進行修飾,因為默認(rèn)權(quán)限就是 public 的,也只能是 public(公有的)。另外,接口中不能聲明變量,只能使用 const 關(guān)鍵字聲明為常量類型的成員屬性。
接口和抽象類一樣也不能實例化為對象,它是一種更嚴(yán)格的規(guī)范,也需要通過子類來實現(xiàn)。與抽象類不同的是,接口可以直接使用接口名稱在接口外面獲取常量成員的值。示例代碼如下所示:
';
echo Demo::URL;
?>運行結(jié)果如下:
C語言中文網(wǎng)
http://c.biancheng.net/php/
2、接口的應(yīng)用
因為接口不能進行實例化操作,所以要使用接口中的成員,就必須借助子類。在子類中繼承接口需要使用 implements 關(guān)鍵字,如果要實現(xiàn)多個接口的繼承,那么每個接口之間使用逗號,分隔。
在使用 implements 關(guān)鍵字繼承接口的同時,還可以使用 extends 關(guān)鍵字來繼承一個類。也就是說,可以在繼承一個類的同時實現(xiàn)多個接口,但一定要先使用 extends 繼承類再去使用 implements 實現(xiàn)多個接口。語法格式如下:
class 類名 extends 父類名 implements 接口一, 接口二, ..., 接口 n {
// 實現(xiàn)所有接口中的抽象方法
}
下面通過一個簡單的示例來演示一下接口的使用,代碼如下:
';
}
public function fun2(){
echo self::URL;
}
}
$obj = new Website();
$obj -> fun1();
$obj -> fun2();
?>運行結(jié)果如下:
C語言中文網(wǎng)
http://c.biancheng.net/php/
提示:既然要通過子類繼承了接口中的方法,那么接口中的所有方法都必須在子類中實現(xiàn),否則 PHP 將拋出如下所示的錯誤信息:
Fatal error: Class Website contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Demo::fun2) ... ...
我們還可以使用 extends 關(guān)鍵字讓一個接口去繼承另一個接口,實現(xiàn)接口之間的擴展。在下面的示例中先定義一個接口 One,然后再定義一個接口 Two 來繼承 One:
interface One{
function fun1();
function fun2();
}
interface Two extends One{
function fun3();
function fun4();
}
如果需要使用抽象類去實現(xiàn)接口中的部分方法,也需要使用 implements 關(guān)鍵字。示例代碼如下所示:
interface Demo{
function fun1();
function fun2();
}
abstract class Website implements Demo{
public function fun2(){
... ... ;
}
abstract function fun3();
}
說了這么多,那么使用接口具體有什么作用呢?其實它的作用很簡單,當(dāng)有很多人一起開發(fā)一個項目時,每個人都可能會去調(diào)用別人寫的一些類。這時有人就會問了,我怎么知道別人的某個功能的實現(xiàn)方法是怎么命名的呢?這個時候 PHP 接口就起到作用了。
簡單來說,我們可以將接口看作一個類的模板或者類的規(guī)定。如果你屬于這類,你就必須遵循這個類的規(guī)定,少一個都不行,但是具體怎么去做,那是你的事。也就是說我們可以定義一些接口,每個接口中都包含若干的抽象方法。在多人開發(fā)時,每個人都根據(jù)自己的需要來實現(xiàn)一部分接口,這樣就可以避免我們在調(diào)用別人開發(fā)的方法時不知道方法名的尷尬了。
文章名稱:PHP interface:接口
本文路徑:http://fisionsoft.com.cn/article/dhepcsh.html


咨詢
建站咨詢
