php5 接口技術

 

  PHP 與大多數面向對象編程語言一樣,不支持多重繼承.也就是說每個類只能繼承一個父類.爲了解決這個問題,PHP 引入了接口,接口的思想是指定了一個實現了該接口的類必須實現的一系列方法。

 

  接口是一種特殊的抽象類,抽象類又是一種特殊的類,所以接口也是一種特殊的類,爲什麼說接口是一種特殊的抽象類呢?如果一個抽象類裏面的所有的方法都是抽象方法,那麼我們就換一種聲明方法使用“接口”;也就是說接口裏面所有的方法必須都是聲明爲抽象方法,另外接口裏面不能聲明變量,而且接口裏面所有的成員都是public 權限的。所以子類在實現的時候也一定要使用public 權限實限。

 

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

 

  代碼片斷

 

 

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

 

  因爲接口是一種特殊的抽象類,裏面所有的方法都是抽象方法,所以接口也不能產生實例對象;它也作爲一種規範,所有抽象方法需要子類去實現。

 

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

 

  代碼片斷

 

 

 

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

 

  代碼片斷

 

 

 

  我們也可以使用抽象類,去實現接口中的部分抽象方法,但要想實例化對象,這個抽象類還要有子類把它所有的抽象方法都實現纔行;在前面我們說過,PHP 是單繼承的,一個類只能有一父類,但是一個類可以實現多個接口,就相當於一個類要遵守多個規範,就像我們不僅要遵守國家的法律,如果是在學校的話,還要遵守學校的校規一樣;

 

  代碼片斷

 

 

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

 

  代碼片斷

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章