萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> PHP面向對象:接口與抽象方法

PHP面向對象:接口與抽象方法

接口(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 ?>

copyright © 萬盛學電腦網 all rights reserved