国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP5面向對象之接口技術詳解

2024-09-04 11:43:38
字體:
來源:轉載
供稿:網(wǎng)友

PHP 5也支持接口的概念,并為之引入了interface和implements關鍵字.和Java一樣,PHP 5使用接口也實現(xiàn)類似于“多重繼承”的效果.

PHP5接口語法如下:

聲明一個類的時候我們使用的關鍵字是”class”,而接口一種特殊的類,使用的關鍵字是“interface”;

類的定義:class 類名{ … },接口的聲明:interface 接口名{ …}

具體PHP5抽象類的代碼如下:

實例代碼如下:

  1. abstract class AbstractClass {      
  2.    abstract public function test();      
  3. }      
  4.      
  5. class ImplementedClass extends AbstractClass {      
  6.    public function test() {      
  7.        echo "ImplementedClass::test() called. ";      
  8.    }      
  9. }      
  10.      
  11. $o = new ImplementedClass;      
  12. $o->test();     

實例代碼如下:

  1. interface displayable {      
  2.   function display();      
  3. }      
  4. interface printable {      
  5.   function doprint();      
  6. }      
  7.      
  8. class foo implements displayable,printable {      
  9.   function display() {      
  10.     // code      
  11.   }   function doprint() {      
  12.     // code      
  13.   }      
  14. }     

抽象類和PHP5接口的引入使PHP成了一個完全面向對象的語

//定義一個接口使用interface關鍵字,“One”為接口名稱

實例代碼如下:

  1. interface One 
  2.     //定義一個常量 
  3.     const constant = 'constant value'
  4.     //定義了一個抽象方法”fun1” 
  5.     public function fun1(); 
  6.     //定義了抽象方法”fun2” 
  7.     public function fun2(); 

上例中定義了一個接口”one”,里面聲明了兩個抽象方法“fun1”和”fun2”,因為接口里面所有的方法都是抽象方法,所以在聲明抽象方法的時候就不用像抽象類那樣使用”abstract”這個關鍵字了,默認的已經(jīng)加上這個關鍵字,另外在接口里邊的”public”這個訪問權限也可以去掉,因為默認就是public的,因為接口里所有成員都要是公有的,所在對于接口里面的成員我們就不能使用“private”的和”protected”的權限了,都要用public或是默認的.另外在接口里面我們也聲明了一個常量“constant“, 因為在接口里面不能用變量成員,所以我們要使用const這個關鍵字聲明.

因為接口是一種特殊的抽象類,里面所有的方法都是抽象方法,所以接口也不能產(chǎn)生實例對象; 它也做為一種規(guī)范,所有抽象方法需要子類去實現(xiàn).

我們可以使用”extends”關鍵字讓一個接口去繼承另一個接口;

實例代碼如下:

  1. //使用”extends”繼承另外一個接口 
  2. interface Two extends One 
  3.     function fun3(); 
  4.     function fun4(); 

而我們定義一接口的子類去實現(xiàn)接口中全部抽象方法使用的關鍵字是”implements”,而不是我們前面所說的”extends”;

//使用“implements”這個關鍵字去實現(xiàn)接口中的抽象方法

實例代碼如下:

  1. class Three implements One 
  2.     function fun1() 
  3.     { 
  4.         … … 
  5.     } 
  6.     function fun2() 
  7.     { 
  8.         … … 
  9.     } 
  10. //實現(xiàn)了全部方法,我們?nèi)タ梢允褂米宇惾嵗瘜ο罅?/span> 

實例代碼如下:

  1. $three=new Three(); 

我們也可以使用抽象類,去實現(xiàn)接口中的部分抽象方法,但要想實例化對象,這個抽象類還要有子類把它所有的抽象方法都實現(xiàn)才行;

在前面我們說過,PHP是單繼承的,一個類只能有一父類,但是一個類可以實現(xiàn)多個接口,就相當于一個類要遵守多個規(guī)范,就像我們不僅要遵守國家的法律,如果是在學校的話,還要遵守學校的校規(guī)一樣;

實例代碼如下:

  1. //使用implements實現(xiàn)多個接口 
  2. class Four implemtns 接口一,接口二,…… 
  3.     //必須把所有接口中的方法都要實現(xiàn)才可以實例化對象. 

PHP中不僅一個類可以實現(xiàn)多個接口,也可以在繼承一個類的同時實現(xiàn)多個接口,一定要先繼承類再去實現(xiàn)接口;

實例代碼如下:

  1. //使用extends繼承一個類,使用implements實現(xiàn)多個接口 
  2. class Four extends 類名一 implemtns 接口一,接口二,…… 
  3.     //所有接口中的方法都要實現(xiàn)才可以實例化對象 
  4.     ……… 

講了這么多最后看看一個實例

VideoCard.php 接口文件(顯卡的功能接口定義)

實例代碼如下:

  1. <?php 
  2. interface VideoCardInter{ 
  3. function Display(); 
  4. function getName(); 
  5. ?> 

Dmeng.php 實現(xiàn)接口(帝盟的廠家實現(xiàn)了這些接口,怎么實現(xiàn)的,主板廠家不用管)

實例代碼如下:

  1. <?php 
  2. include_once("VideoCard.php"); 
  3. class Dmeng implements VideoCardInter { 
  4. function Display(){ 
  5. echo "Display"
  6. function getName(){ 
  7. return "Dmeng VideoCard"
  8. ?> 

Mainboard.php  應用接口(把顯卡插到主板上,主板只要用這些接口就行了,也可以不用)

實例代碼如下:

  1. <?php 
  2. include_once("VideoCard.php"); 
  3. include_once("Dmeng.php"); 
  4. class Mainboard{ 
  5. var $vc
  6. function run(VideoCardInter $vc){  //定義VideoCardInter接口類型參數(shù),這時并不知道是誰來實現(xiàn). 
  7. $this->vc=$vc
  8. $this->vc->Display(); 
  9. echo "主板運行!"
  10. $conputer=new Mainboard(); 
  11. $conputer->run(new Dmeng);  
  12. //用的時候把實現(xiàn)接口類的名稱寫進來,(現(xiàn)在是帝盟的顯卡,也可以換成別的場家的,只要他們都實現(xiàn)了接口) 
  13. ?> 

上面是轉自的,然后自己試著寫了點東西:把自己的思想總結一下

這里我想是分成4個方面

1,靜態(tài)鏈接數(shù)據(jù)庫類(基本的鏈接數(shù)據(jù)庫,查詢記錄數(shù),返回結果集等等)

2,每個模塊的接口(例如新聞類接口  NewsInterface)

3,實現(xiàn)接口的類(新聞實現(xiàn)類  NewsInterfaceImpl 這里面寫一些頁面中用到的方法,然后new這個對象 調(diào)用這里么的方法)

4,模塊類(新聞類  News)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 元朗区| 洛南县| 九江市| 永清县| 微博| 舞钢市| 鄂伦春自治旗| 祁东县| 德阳市| 静海县| 尤溪县| 子长县| 鄂伦春自治旗| 祁门县| 信阳市| 彩票| 溧水县| 涞水县| 九龙城区| 揭东县| 绩溪县| 高陵县| 德清县| 东台市| 赤城县| 灯塔市| 苍溪县| 和平区| 肥西县| 仪征市| 伊春市| 偏关县| 吉林市| 玛多县| 黄龙县| 扬州市| 咸丰县| 高平市| 天镇县| 嘉义县| 天镇县|