PHP抽象類與介面的區別

2022-09-15 15:03:26 字數 932 閱讀 9700

php抽象類與介面的區別

首先,看看什麼是抽象類和介面

抽象類:

定義為抽象的類不能被例項化.任何乙個類,如果它裡面至少有乙個方法是被宣告為抽象的,那麼這個類就必須被宣告為抽象的。被定義為抽象的方法只是宣告了其呼叫方式(引數),不能定義其具體的功能實現。繼承乙個抽象類的時候,子類必須定義父類中的所有抽象方法;另外,這些方法的訪問控制必須和父類中一樣(或者更為寬鬆)。例如某個抽象方法被宣告為受保護的,那麼子類中實現的方法就應該宣告為受保護的或者公有的,而不能定義為私有的。此外方法的呼叫方式必須匹配,即型別和所需引數數量必須一致。例如,子類定義了乙個可選引數,而父類抽象方法的宣告裡沒有,則兩者的宣告並無衝突。 這也適用於 php 5.4 起的建構函式。在 php 5.4 之前的建構函式宣告可以不一樣的.

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

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

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

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

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

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

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

區別:1.對介面的繼承使用implements,抽象類使用extends.

2.介面中不可以宣告變數,但可以宣告類常量.抽象類中可以宣告各種變數

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

4.介面中的方法預設為public,抽象類中的方法可以用public,protected,private修飾

5.乙個類可以繼承多個介面,但只能繼承乙個抽象類

PHP抽象類與介面的區別

不同點 對介面的使用方式是通過關鍵字implements來實現的,而對於抽象類的操作是使用類繼承的關鍵字exotends實現的。抽象類類似於乙個含義抽象方法的普通類。介面沒有資料成員,但是抽象類有資料成員,抽象類可以實現資料的封裝。介面沒有建構函式,抽象類可以有建構函式。介面中的方法都是public...

PHP抽象類與介面的區別

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

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

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