接口(interface)是抽象方法和靜態常量定義的集合。
接口是一種特殊的抽象類,這種抽象類中只包含抽象方法和靜態常量。
接口中沒有其它類型的內容。
我們先寫接口的定義,下面的例子是接口的一個簡單寫法。
view sourceprint?1 interface 接口名{
2 }
下面的例子定義了一個接口 user ,這個接口中有兩個抽象方法,getname() 和 setname()。能看到接口的寫法和類很相似。
view sourceprint?1 <?
2 interface user {
3 function getname();
4 function setname($_name);
5 }
6 ?>
注意,在接口中只能有抽象方法。如果在接口中出現了非抽象方法,會報錯如下:
interface function user::setname() cannot contain body in ……….
view sourceprint?1 <?
2 interface user {
3 function getname();
4 function setname($_name){}
5 }
6 ?>
程序運行如下:
view sourceprint?1 fatal error: interface function user::setname() cannot contain body in e:phpprojects est.php on line 4
在接口中的抽象方法只能是public的,默認也是public權限。
並且不能設置成 private 或者 protected 類型。
否則會報錯如下:
access type for interface method user::setname() must be omitted in —on line —
在接口中,訪問類型必須忽略。
view sourceprint?1 <?
2 interface user {
3 public function getname();
4 private function setname($_name);
5 }
6 ?>
程序運行如下:
view sourceprint?1 fatal error: access type for interface method user::setname() must be omitted in e:phpprojects est.php on line 4
protected訪問權限也會有問題
view sourceprint?1 <?
2 interface user {
3 public function getname();
4 protected function setname($_name);
5 }
6 ?>
程序運行如下:
view sourceprint?1 fatal error: access type for interface method user::setname() must be omitted in e:phpprojects est.php on line 4
即使abstract 和 final 修飾符不能修飾接口中的抽象方法。
view sourceprint?1 <?
2 interface user {
3 final function getname();
4 abstract function setname($_name);
5 }
6 ?>