PHP抽象類與介面的區別

2021-07-22 06:55:04 字數 1817 閱讀 8052

不同點:

對介面的使用方式是通過關鍵字implements來實現的,而對於抽象類的操作是使用類繼承的關鍵字exotends實現的。

抽象類類似於乙個含義抽象方法的普通類。

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

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

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

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

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

抽象類

php 5 支援抽象類和抽象方法。

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

繼承乙個抽象類的時候,子類必須定義父類中的所有抽象方法;另外,這些方法的訪問控制必須和父類中一樣(或者更為寬鬆)。例如某個抽象方法被宣告為受保護的,那麼子類中實現的方法就應該宣告為受保護的或者公有的,而不能定義為私有的。此外方法的呼叫方式必須匹配,即型別和所需引數數量必須一致。例如,子類定義了乙個可選引數,而父類抽象方法的宣告裡沒有,則兩者的宣告並無衝突,即我們的子類可以定義父類簽名中不存在的可選引數(定義了預設值的引數)

abstract

class

abstractclass

class

concreteclass

extends

abstractclass

}

物件介面

使用介面(inte***ce),可以指定某個類必須實現哪些方法,但不需要定義這些方法的具體內容。

介面是通過 inte***ce 關鍵字來定義的,就像定義乙個標準的類一樣,但其中定義所有的方法都是空的。

介面中定義的所有方法都必須是公有,這是介面的特性。

實現(implements)

要實現乙個介面,使用 implements 操作符。類中必須實現介面中定義的所有方法,否則會報乙個致命錯誤。類可以實現多個介面,用逗號來分隔多個介面的名稱。

note:

實現多個介面時,介面中的方法不能有重名。

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

類要實現介面,必須使用和介面中所定義的方法完全一致的方式。否則會導致致命錯誤。

常量

介面中也可以定義常量。介面常量和類常量的使用完全相同,但是不能被子類或子介面所覆蓋。

// 宣告乙個'itemplate'介面

inte***ce

itemplate

// 實現介面

// 下面的寫法是正確的

class

template

implements

itemplate

public

function

gethtml

($template)

', $value, $template);

}return

$template;

}}

參考:物件介面,抽象類

PHP抽象類與介面的區別

首先,看看什麼是抽象類和介面 抽象類 定義為抽象的類不能被例項化.任何乙個類,如果它裡面至少有乙個方法是被宣告為抽象的,那麼這個類就必須被宣告為抽象的。被定義為抽象的方法只是宣告了其呼叫方式 引數 不能定義其具體的功能實現。繼承乙個抽象類的時候,子類必須定義父類中的所有抽象方法 另外,這些方法的訪問...

PHP抽象類與介面的區別

php抽象類與介面的區別 首先,看看什麼是抽象類和介面 抽象類 定義為抽象的類不能被例項化.任何乙個類,如果它裡面至少有乙個方法是被宣告為抽象的,那麼這個類就必須被宣告為抽象的。被定義為抽象的方法只是宣告了其呼叫方式 引數 不能定義其具體的功能實現。繼承乙個抽象類的時候,子類必須定義父類中的所有抽象...

java抽象類與介面的區別抽象類與介面的特性是什麼

介面和抽象類的概念不一樣。介面是對動作的抽象,抽象類是對根源的抽象。抽象類表示的是個物件,什麼物件。介面表示的是物件的功能,能做什麼。舉個例子 男人 物件 和女人 物件 這兩個類 物件 他們可以抽象為人。公貓和母貓可以抽象為貓。人可以吃飯,可以睡覺,貓呢也可以吃飯和睡覺,那麼這個 吃飯 睡覺 就是某...