php介面 抽象類

2021-10-22 06:45:31 字數 1666 閱讀 7688

定義為抽象的類不能被例項化。任何乙個類,如果它裡面至少有乙個方法是被宣告為抽象的,那麼這個類就必須被宣告為抽象的。(抽象類可以沒有抽象方法,但是抽象類依然不能被例項化)被定義為抽象的方法只是宣告了其呼叫方式(引數),不能定義其具體的功能實現。 如

abstract class  abstractclass

abstract protected function getvalue ();

abstract protected function prefixvalue ( $prefix );

// 普通方法(非抽象方法)

public function printout ()

}

繼承乙個抽象類的時候,非抽象子類必須定義父類中的所有抽象方法;另外,這些方法的訪問控制必須和父類中一樣(或者更為寬鬆)。例如某個抽象方法被宣告為受保護的,那麼子類中實現的方法就應該宣告為受保護的或者公有的,而不能定義為私有的。

此外方法的呼叫方式必須匹配,即型別和所需引數數量必須一致。例如,子類定義了乙個可選引數(類似function eat(a , a,a,b=1)中的$b就是可選引數),而父類抽象方法的宣告裡沒有,則兩者的宣告並無衝突。這也適用於 php 5.4 起的建構函式。在 php 5.4 之前的建構函式宣告可以不一樣的。

inte***ce play  

inte***ce play  

inte***ce read

abstract class human

//抽象類可以實現介面後不實現其方法,可以繼承乙個抽象類的同時實現多個介面注意必須要把extends語句寫在implements前面,否則會報錯

abstract class sutdent extends human implements play,read

介面可以繼承另乙個或多個介面,使用extends關鍵字,多個用 『,』 隔開,但是不能實現另乙個介面,當然更不能繼承抽象類

inte***ce play  

inte***ce playnew

inte***ce playgame extends play,playnew

a.介面是通過 inte***ce 關鍵字來定義的, 抽象類是通過abstract關鍵字來定義的。

b.對介面的使用方式是通過關鍵字implements來實現的,而對於抽象類的操作是使用類繼承的關鍵字extends實現的,使用時要特別注意。

c.介面沒有資料成員,但是抽象類有資料成員,抽象類可以實現資料的封裝。

d.介面沒有建構函式,抽象類可以有建構函式。

e.介面中的方法都是public型別,而抽象類中的方法可以使用private、protected或public來修飾。

f.乙個類可以同時實現多個介面,但是只能實現乙個抽象類。

介面也可以繼承,通過使用 extends 操作符。

相同點:抽象方法與介面的函式體內不能寫任何東西,連兩個大括號都不能寫!!!如:function getname();這樣就行了

php抽象類和介面

介面 使用介面,你可以指定某個類必須實現那些方法,但是不需要定義這些方法的具體內容,我們可以通過inte ce來定義乙個介面,就像定義標準類一樣,但其中定義所有的方法都是空的,介面中定義的所有的方法都必須是public 實現乙個介面,可以使用implement操作符,類中必須實現介面中定義的所用的方...

php 介面和抽象類

php 介面和抽象類 介面 inte ce 在介面內定義方法,可不提供具體的 實現 作用 提供乙個規範,如果我們知道乙個類實現了某個介面,那麼就知道了可以呼叫該介面的那些方法,我們只需要知道這些就夠了。當有很多人一起開發乙個專案時,可能都會去呼叫別人寫的一些類,我怎麼知道他的某個功能的實現方法是怎麼...

抽象介面 php,簡述php抽象類和介面例項

抽象類 1 抽象類中可以宣告各種型別的變數。2 類中只要有抽象方法這個類就必須申明為抽象類。抽象方法的定義 abstract 修飾符 function 方法名 param 3 抽象類中的抽象方法,在子類中必須實現,並且保持引數一致,但是可以使用額外的預設值。4 抽象類不可以直接例項化。abstrac...